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>]’