Hi,
The trunk version of Boost.MultiIndex introduces support for
initializer list, which seems to work fine with regression tests
except for intel-linux-14.0.0:
http://tinyurl.com/pclssoe
http://tinyurl.com/nzwzpu6
which spits error messages like this (replaced large chunks of text
with *** for clarity):
../libs/multi_index/test/test_modifiers.cpp(230): error: no instance of
overloaded function
"boost::multi_index::detail::hashed_index<***>::insert [***]"
matches the
argument list
argument types are: ({...})
object type is: employee_set_by_name
i1.insert({{4,"Vanessa",20,9236},{5,"Penelope",55,2358}});
At first I thought this is failing because for it to work the compiler
should not only support initializer lists but also C++11 unified
initialization syntax, but I think this is not the problem because
a) intel-linux-14.0.0 does indeed seem to support unified initialization
syntax, since BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX is not
listed in http://tinyurl.com/ndutn2w .
b) the following test code also fails:
s.assign({0,1,2,3,4,5});
with s a multi_index_container of ints, and this does not depend
on unified initialization syntaxes. The error message here, FWIW, is
different than before:
../libs/multi_index/test/test_copy_assignment.cpp(56): internal error:
assertion failed: node_has_side_effects: bad node kind
(shared/cfe/edgcpfe/il.c, line 20611)
The tested code seems simple enough, for instance lines 271 and
following of multi_index_container.hpp look like:
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
multi_index_container(
std::initializer_list<Value> list,
const ctor_args_list& args_list=ctor_args_list(),
const allocator_type& al=allocator_type())
[...]
and the ofending assign member function in sequenced_index.hpp
is as innocent as:
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
void assign(std::initializer_list