[multi_index][intel-linux-14.0.0][repost] Help needed debugging initializer list support
Hi, Any kind soul can help with this? Reposting: 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<value_type> list) { assign(list.begin(),list.end()); } #endif Besides, other libs with initializer list support such as Boost.SmartPtr and Boost.Unordered cope fine with this compiler. Clues? Any help much appreciated. Joaquín M López Muñoz Telefónica Digital
participants (1)
-
Joaquin M Lopez Munoz