#if defined (_STDDEF_H) || defined (__need_NULL) #undef NULL/* in case <stdio.h> has defined it. */ #ifdef __GNUG__ #define NULL __null #else /* G++ */ #ifndef __cplusplus #define NULL ((void *)0) #else /* C++ */ #define NULL 0 #endif /* C++ */ #endif /* G++ */ #endif/* NULL not defined and <stddef.h> or need NULL. */ #undef__need_NULL
ああ、そうか、たしかに状況は違うね。 でも、後続する unqualified-id が template であることを明示する、 という機能では同じものかと思う。ところで、今、 template<class T> class Foo { T::template hoge<int>; }; とか試したけど、g++ 3.2 じゃ、エラーになるね。 ISO C++ forbids declaration of `hoge' with no type `::hoge<int>' is not a valid declarator とか言われる。書き方が間違ってる?