Здравствуйте, Bender Bending Rodriguez, Вы писали:
BBR>BBR>template<class _Ty1,
BBR> class _Ty2>
BBR> class _Move_operation_category<pair<_Ty1, _Ty2> >
BBR> { // reports true if either member of pair is _Swap_move_tag
BBR>public:
BBR> typedef typename _If<
BBR> _Is_swap_move<typename _Move_operation_category<
_Ty1>>::_Move_cat>::_Value || /// false для класс A
BBR> _Is_swap_move<typename _Move_operation_category<
_Ty2>>::_Move_cat>::_Value, /// true для vector< int > (смотри на _Move_operation_category для вектора)
BBR> _Swap_move_tag,
BBR> _Undefined_move_tag>::_Result _Move_cat; /// получаем _Swap_move_tag, что выглядит несколько странно.
BBR> };
BBR>
BBR>Вот такие пироги.
BBR>Похоже, что пирожок был испечён SP1 для VS2008
А ты хочешь, чтобы твой pair_t::second копировался по значению???
А если там будет вектор на миллион интов?
Да в твоем внешнем векторе будет миллион пар...
Ну, переопредели тогда _Move_operation_category для своего pair_t и будет тебе "счастье"...
Может, проще все таки сделать ctor по-умолчанию?