[Boost-bugs] [Boost C++ Libraries] #9003: Compiler error when trying to return and assign a vector of non-copyables but movables from a function in C++03

Subject: [Boost-bugs] [Boost C++ Libraries] #9003: Compiler error when trying to return and assign a vector of non-copyables but movables from a function in C++03
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-08-16 09:08:40


#9003: Compiler error when trying to return and assign a vector of non-copyables
but movables from a function in C++03
-------------------------------------------+------------------------------
 Reporter: Adam Romanek <romanek.adam@…> | Type: Bugs
   Status: new | Milestone: To Be Determined
Component: None | Version: Boost 1.54.0
 Severity: Problem | Keywords:
-------------------------------------------+------------------------------
 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<Alloc>::priv_construct_dispatch2(boost::false_type,
 Alloc&, T*, const P0&) [with T = non_copyable, P0 = non_copyable, Alloc =
 std::allocator<non_copyable>, boost::false_type =
 boost::integral_constant<bool, false>]’:
 /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<Alloc>::priv_construct(boost::true_type,
 Alloc&, T*, const P0&) [with T = non_copyable, P0 = non_copyable, Alloc =
 std::allocator<non_copyable>, boost::true_type =
 boost::integral_constant<bool, true>]’
 /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<Alloc>::construct(Alloc&, T*, const
 P0&) [with T = non_copyable, P0 = non_copyable, Alloc =
 std::allocator<non_copyable>]’
 /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<I,
 F, F>::type boost::container::uninitialized_copy_alloc_n(A&, I, typename
 std::iterator_traits<_II>::difference_type, F) [with A =
 std::allocator<non_copyable>, I = non_copyable*, F = non_copyable*,
 typename
 boost::container::container_detail::disable_if_memcpy_copy_constructible<I,
 F, F>::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<T, Allocator>::vector(const
 boost::container::vector<T, Allocator>&) [with T = non_copyable, Allocator
 = std::allocator<non_copyable>, boost::container::vector<T, Allocator> =
 boost::container::vector<non_copyable>]’
 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<non_copyable>&()’ 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.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9003>
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:13 UTC