std::pair & MSVC 6.0
От: Sergey Россия  
Дата: 05.01.03 10:21
Оценка:
Убогий 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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: std::pair & MSVC 6.0
От: Ivan Россия www.rsdn.ru
Дата: 05.01.03 10:25
Оценка: 3 (1)
Здравствуйте, Sergey, Вы писали:

S>Убогий MSVC 6.0 отказывается компилировать следующее:


Странно, у меня компилируется VC6.0 SP5
Re[2]: std::pair & MSVC 6.0
От: Ivan Россия www.rsdn.ru
Дата: 05.01.03 10:30
Оценка: 3 (1)
Здравствуйте, Ivan, Вы писали:

I>Здравствуйте, Sergey, Вы писали:

Все, я понял в чем дело — подключи STL из Platform SDK
MICROSOFT PLATFORM SDK\INCLUDE\WIN64\CRT
и код будет компилироваться
Re[3]: std::pair & MSVC 6.0
От: Ivan Россия www.rsdn.ru
Дата: 05.01.03 10:38
Оценка: 3 (1)
Здравствуйте, Ivan, Вы писали:

I>Здравствуйте, Ivan, Вы писали:




Вскрытие показало, что не компилировалось из-за этого
    template<class U, class V> pair(const pair<U, V> &p)
        : first(p.first), second(p.second) {}

в Platform SDK убрали
Re[3]: std::pair & MSVC 6.0
От: Sergey Россия  
Дата: 05.01.03 10:42
Оценка:
Здравствуйте, 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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.