http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58631

--- Comment #1 from bsamim at yahoo dot com ---
It seems this happens in the following code when the copy constructor for is
set as Card(Card& ) = delete;    It will crash the compiler on this as I
believe it is because the vector is expecting it to be copyable even though it
is doing a move. After changing the code a bit and putting it as private I was
able to get the following output but it still crashed the compiler at the end.

Card.h:28:5: error: ‘Card::Card(const Card&)’ is private
In file included from /usr/include/c++/4.7/bits/move.h:57:0,
                 from /usr/include/c++/4.7/bits/stl_pair.h:61,
                 from /usr/include/c++/4.7/bits/stl_algobase.h:65,
                 from /usr/include/c++/4.7/vector:61,
                 from Card.h:4,
                 from Deck.h:4,
                 from Deck.cpp:1:
/usr/include/c++/4.7/type_traits:762:43: error: within this context
In file included from Deck.h:4:0,
                 from Deck.cpp:1:
/usr/include/c++/4.7/type_traits: In instantiation of ‘struct
std::__is_nt_constructible_impl<Card, Card&&>’:
/usr/include/c++/4.7/type_traits:116:12:   required from ‘struct
std::__and_<std::is_constructible<Card, Card&&>,
std::__is_nt_constructible_impl<Card, Card&&> >’
/usr/include/c++/4.7/type_traits:1002:12:   required from ‘struct
std::is_nothrow_constructible<Card, Card&&>’
/usr/include/c++/4.7/type_traits:1033:12:   required from ‘struct
std::__is_nothrow_move_constructible_impl<Card, false>’
/usr/include/c++/4.7/type_traits:1039:12:   required from ‘struct
std::is_nothrow_move_constructible<Card>’
/usr/include/c++/4.7/type_traits:126:12:   required from ‘struct
std::__not_<std::is_nothrow_move_constructible<Card> >’
/usr/include/c++/4.7/type_traits:116:12:   required from ‘struct
std::__and_<std::__not_<std::is_nothrow_move_constructible<Card> >,
std::is_copy_constructible<Card> >’
/usr/include/c++/4.7/bits/move.h:107:12:   required from ‘struct
std::__move_if_noexcept_cond<Card>’
/usr/include/c++/4.7/bits/stl_iterator.h:1129:32:   required from
‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator,
_InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = Card*;
_ForwardIterator = Card*; _Allocator = std::allocator<Card>]’
/usr/include/c++/4.7/bits/vector.tcc:413:6:   required from ‘void
std::vector<_Tp, _Alloc>::_M_emplace_back_aux(_Args&& ...) [with _Args =
{Card}; _Tp = Card; _Alloc = std::allocator<Card>]’
/usr/include/c++/4.7/bits/vector.tcc:102:4:   required from ‘void
std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {Card}; _Tp =
Card; _Alloc = std::allocator<Card>]’

Reply via email to