つーか,よくよく見たらこれVC++7.1のバグやんw.
#あ〜,SFINAEとsizeofの組み合わせっつー言語規格で明確に言及されていない状況で戯れているコードだから「バグ」って表現はまずいな.あれだ.鼻から悪魔が出てきてる状態って表現すれば良いのか.
注意:以下のコードはVC++7.1のみで意味があります.
#include <vector> #include <iostream> template<class T, T *p = 0, int i = sizeof(p->begin(), 0)> struct disc { static const int value = i; }; template<class T> typename char (&test(T const volatile *))[disc<T>::value]; int main() { std::cout << sizeof(test(static_cast<std::vector<int> *>(0))) << std::endl; std::cout << sizeof(test(static_cast<int *>(0))) << std::endl; }