c++.beta - statics still break in 8.36
Simplified source is here from CppUnit 1.8.0 class ClassType{ ClassType(int name){} }; int Name(){ return 0; } #define CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(suiteName ) \ static ClassType __autoRegisterSuite(suiteName) CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(coreSuiteName()); --------------------------------------------------------------------- this also break: ClassType some(coreSuiteName()); Those were legal in vc6 and bcc55
Sep 10 2003
Ok, but there are some errors in the code you posted, and I can't figure out just what you meant. For example, what is Name() for? where's the definition of coreSuiteName()? "nyra" <nyra sohu.com> wrote in message news:bjn97v$24p3$1 digitaldaemon.com...Simplified source is here from CppUnit 1.8.0 class ClassType{ ClassType(int name){} }; int Name(){ return 0; } #define CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(suiteName ) \ static ClassType __autoRegisterSuite(suiteName) CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(coreSuiteName()); --------------------------------------------------------------------- this also break: ClassType some(coreSuiteName()); Those were legal in vc6 and bcc55
Sep 10 2003
sorry for my careless ! but forget that the function coreSuiteName() really is Name(). this problem is about template explicit instantiation and static variable ---------------------------------------------- template <class T> class ClassType{ ClassType(int name){} }; int Name(){ return 0; } static ClassType<int> some(Name()); //error-occured ---------------------------------------------- it seems ClassType<int> is not instanted before static variable some defined! compiler can't find the constructor of ClassType<int>(int name). but when I use non-static defination, everything goes well. ClassType<int> some(Name()); especially, if I put a non-static defination (or explicit template instance )before static one, it compiled! ClassType<int> some1(Name()); static ClassType<int> some2(Name()); OR template ClassType<int>; static ClassType<int> some(Name()); expecting this fixed......... Sorry for my last letter again!
Sep 10 2003