id summary reporter owner description type status milestone component version severity resolution keywords cc 9003 Compiler error when trying to return and assign a vector of non-copyables but movables from a function in C++03 Adam Romanek Ion Gaztañaga "I get a compiler error when when trying to return and assign a vector of non-copyables but movables from a function in C++03: {{{ g++ -I/home/A.Romanek/tmp/boost/boost_1_54_0 -O3 main.cpp -o main In file included from /home/A.Romanek/tmp/boost/boost_1_54_0/boost/container/allocator_traits.hpp:388:0, from /home/A.Romanek/tmp/boost/boost_1_54_0/boost/container/detail/utilities.hpp:28, from /home/A.Romanek/tmp/boost/boost_1_54_0/boost/container/vector.hpp:37, from main.cpp:1: /home/A.Romanek/tmp/boost/boost_1_54_0/boost/preprocessor/iteration/detail/local.hpp: In static member function ‘static void boost::container::allocator_traits::priv_construct_dispatch2(boost::false_type, Alloc&, T*, const P0&) [with T = non_copyable, P0 = non_copyable, Alloc = std::allocator, boost::false_type = boost::integral_constant]’: /home/A.Romanek/tmp/boost/boost_1_54_0/boost/preprocessor/iteration/detail/local.hpp:37:1: instantiated from ‘static void boost::container::allocator_traits::priv_construct(boost::true_type, Alloc&, T*, const P0&) [with T = non_copyable, P0 = non_copyable, Alloc = std::allocator, boost::true_type = boost::integral_constant]’ /home/A.Romanek/tmp/boost/boost_1_54_0/boost/preprocessor/iteration/detail/local.hpp:37:1: instantiated from ‘static void boost::container::allocator_traits::construct(Alloc&, T*, const P0&) [with T = non_copyable, P0 = non_copyable, Alloc = std::allocator]’ /home/A.Romanek/tmp/boost/boost_1_54_0/boost/container/detail/utilities.hpp:555:10: instantiated from ‘typename boost::container::container_detail::disable_if_memcpy_copy_constructible::type boost::container::uninitialized_copy_alloc_n(A&, I, typename std::iterator_traits<_II>::difference_type, F) [with A = std::allocator, I = non_copyable*, F = non_copyable*, typename boost::container::container_detail::disable_if_memcpy_copy_constructible::type = non_copyable*, typename std::iterator_traits<_II>::difference_type = int]’ /home/A.Romanek/tmp/boost/boost_1_54_0/boost/container/vector.hpp:734:7: instantiated from ‘boost::container::vector::vector(const boost::container::vector&) [with T = non_copyable, Allocator = std::allocator, boost::container::vector = boost::container::vector]’ main.cpp:14:49: instantiated from here /home/A.Romanek/tmp/boost/boost_1_54_0/boost/preprocessor/iteration/detail/local.hpp:37:1: error: passing ‘const non_copyable’ as ‘this’ argument of ‘non_copyable::operator boost::rv&()’ discards qualifiers [-fpermissive] }}} The problem was discussed on Boost-users list: http://lists.boost.org/boost-users/2013/08/79697.php See the attachment for a code example. The problem can be reproduced on gcc 4.6.3. NOTE: using -std=c++0x makes the code example compile without any problems." Bugs closed To Be Determined container Boost 1.54.0 Problem wontfix