Убогий MSVC 6.0 отказывается компилировать следующее:
#include <utility>
struct AAA
{
AAA(int a) : _a(a) {}
operator std::pair<bool, bool> () const
{ return std::make_pair(true, true); }
private:
int _a;
};
int main(int argc, char* argv[])
{
AAA a(1);
std::pair<bool, bool> aa = a;
aa = a;
return 0;
}
Нужен оператор приведения к std::pair. Как бы компилятор обмануть?
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
S>Убогий MSVC 6.0 отказывается компилировать следующее:
Странно, у меня компилируется

VC6.0 SP5
Здравствуйте, Ivan, Вы писали:
I>Здравствуйте, Ivan, Вы писали:
Вскрытие показало, что не компилировалось из-за этого
template<class U, class V> pair(const pair<U, V> &p)
: first(p.first), second(p.second) {}
в Platform SDK убрали
Здравствуйте, Ivan, Вы писали:
I>>Здравствуйте, Sergey, Вы писали:
I>Все, я понял в чем дело — подключи STL из Platform SDK
I>MICROSOFT PLATFORM SDK\INCLUDE\WIN64\CRT
I>и код будет компилироваться
Я понимаю, что если конструктор копирования std::pair поменять с
template<class U, class V> pair(const pair<U, V> &p)
на
pair(const _T1& _V1, const _T2& _V2)
то оно будет компилироваться. Но это лекарство, IMHO, хуже болезни
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.