"ëÒÁ×ÞÅÎËÏ ð.ç." <kravchenko@xxxxxxx> writes: > #ifdef TEMPLATE > template<class arg> > class At { > public: > void a(arg) {cout << "a" << endl; } > }; > typedef At<void> A; > #else > class A { > public: > void a(void) {cout << "a" << endl; } > }; > #endif > > i've supposed that two banches (with and without > -DTEMAPLTE) are identical. but gcc 2.95.3 & 3.2.3 > compilers fails compiling -DTEMPLATE with errors. void a(void) does not declare a nameless parameter of type void, but as a special case (inherited from C) declares a function without parameters. Since this happens at the syntactic level, the same is not true for a template argument. -- Falk