[Boost-bugs] [Boost C++ Libraries] #11387: list.emplace_back() broken on Visual Studio 2010

Subject: [Boost-bugs] [Boost C++ Libraries] #11387: list.emplace_back() broken on Visual Studio 2010
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-06-10 15:17:50


#11387: list.emplace_back() broken on Visual Studio 2010
------------------------------+-------------------------
 Reporter: rafael.gago@… | Owner: igaztanaga
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: container
  Version: Boost 1.58.0 | Severity: Showstopper
 Keywords: |
------------------------------+-------------------------
 The sample below fails to compile with 1.58. It has no problem with 1.57.

 {{{
 #include <boost/container/list.hpp>
 #include <boost/container/vector.hpp>

 struct simple_type {

     simple_type (int a, int b, int c, int d, int e, int f, int g)
     {
         a_ = a;
         b_ = b;
         c_ = c;
         d_ = d;
         e_ = e;
         f_ = f;
         g_ = g;
     };

     int a_, b_, c_, d_, e_ , f_, g_;
 };

 int main()
 {
     boost::container::vector<simple_type> vector;
     vector.emplace_back (1, 2, 3, 4, 5, 6, 7);

     boost::container::list<simple_type> list;
     list.emplace_back (1, 2, 3, 4, 5, 6, 7);

     return 0;
 }
 }}}

 The error reported:


 {{{
 1>------ Build started: Project: intrusive_list, Configuration: Debug
 Win32 ------
 1> stdafx.cpp
 1> list_bug.cpp
 1>c:\boost_versions\boost_1_58_0\boost\container\list.hpp(753): error
 C2660:
 'boost::container::container_detail::node_alloc_holder<Allocator,ICont>::create_node'
 : function does not take 7 arguments
 1> with
 1> [
 1> Allocator=boost::container::new_allocator<simple_type>,
 1>
 ICont=boost::intrusive::list_impl<boost::intrusive::bhtraits<boost::container::container_detail::list_node<simple_type,void
 *>,boost::intrusive::list_node_traits<void
 *>,normal_link,boost::intrusive::dft_tag,1>,unsigned
 int,true,boost::intrusive::list_defaults::header_holder_type>
 1> ]
 1> c:\boost_versions\boost_1_58_0\boost\container\list.hpp(753) :
 see reference to function template instantiation
 'boost::container::container_detail::iterator_from_iiterator<IIterator,IsConst>
 boost::container::list<T>::emplace<int,int,int,int,int,int,int>(boost::container::container_detail::iterator_from_iiterator<IIterator,true>,P0
 &&,P1 &&,P2 &&,P3 &&,P4 &&,P5 &&,P6 &&)' being compiled
 1> with
 1> [
 1>
 IIterator=boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::container_detail::list_node<simple_type,void
 *>,boost::intrusive::list_node_traits<void
 *>,normal_link,boost::intrusive::dft_tag,1>,false>,
 1> IsConst=false,
 1> T=simple_type,
 1> P0=int,
 1> P1=int,
 1> P2=int,
 1> P3=int,
 1> P4=int,
 1> P5=int,
 1> P6=int
 1> ]
 1>
 c:\users\rafgag\vcb1000dd.git_migrated\build\intrusive_list\intrusive_list.cpp(31)
 : see reference to function template instantiation 'void
 boost::container::list<T>::emplace_back<int,int,int,int,int,int,int>(P0
 &&,P1 &&,P2 &&,P3 &&,P4 &&,P5 &&,P6 &&)' being compiled
 1> with
 1> [
 1> T=simple_type,
 1> P0=int,
 1> P1=int,
 1> P2=int,
 1> P3=int,
 1> P4=int,
 1> P5=int,
 1> P6=int
 1> ]
 1>c:\boost_versions\boost_1_58_0\boost\container\list.hpp(753): fatal
 error C1903: unable to recover from previous error(s); stopping
 compilation
 1> Generating Code...
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
 ==========
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11387>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC