Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, __LP, Вы писали:
RB>Упс...
RB>Сейчас проверял ответ на один из вопросов по Win32, ну и вставил в код #include <windows.h>. RB>Заработало, блин.
RB>Без строки "#include <windows.h>" не работает — sizeof(double).
RB>Что за ???
представлен способ определения наличия метода у типа. Однако, при наличии перегруженного метода возникают проблемы.
RB>Ну и как с этим жить?
RB>Разные конструкции по-разному реагируют на наличие инклюдников...
Может быть здесь спросить: microsoft.public.vc
C++ можно выучить за 21 день! ...если дни — полярные.
представлен способ определения наличия метода у типа. Однако, при наличии перегруженного метода возникают проблемы.
Я немного поэкспериментировал с этим кодом. Выяснилось, что на него влияют не только <windows.h> и <tchar.h>, но и <vector>, <list>, <map>, <string> и т.д. Однако с <deque> и <set> все нормально. Далее оказалось что хедеры тут cкорей всего не при чем. Я немного изменил код вот так:
#include <iostream>
using namespace std;
struct Base
{
void method(void) {}
void method(char) {}
};
template <typename T, T val>
struct type_has_value {};
template <typename T>
char check_method(type_has_value<void (T::*)(void), &T::method>* = NULL);
template <typename T>
double check_method(...);
int main(int argc, char* argv[])
{
int u = sizeof(check_method<Base>());
cout << u << endl;
system("pause");
return 0;
}
Он выдает 1. Но если между #include <iostream> и using namespace std;
вставить 205 или более пустых строк, то выводиться будет 8 (по крайней мере у меня так).
Попробуйте проверить, у кого еcть VC 7.1.
RB>Ну и как с этим жить?
- Доктор, я буду жить?
— Будете, ...но хреново. :(
C++ можно выучить за 21 день! ...если дни — полярные.