
But I took it as honest as possible and searched for the definition(s) of any of the definitions of those static "value" members declared in any of the (macro hidden) AUX_WRAPPER_NAME classes. Regrettably I didn't find any of these definitions in my 1.30.0 or in the last official 1.30.2 release. Can someone give me a pointer, where these definitions can be found?
I pointed you at the file above. Please use a CVS snapshot or the release candidate for the basis of your patch 1.30.x is very different.
Thanks for that hint, Dave. I took the last officially available files and found one **further** MSVC7.1 bug concerning static data members - sigh! (I posted the problems some minutes ago to the m.s.v.c. news group) The following program causes a linker error using the /Za flag (disable language extensions): b.h: ------------------------- #ifndef B_H_INC #define B_H_INC template <typename T> struct B { static const int val = 123; }; template <typename T> const int B<T>::val; // Definition provided, but not recognized... #endif ------------------------- main.cpp -------------------- #include "b.h" void foo(const int&) { } int main() { typedef B<double> MyB; foo(MyB::val); }------------------------- I could verify, that the same kind of linker error occurs for boost sources, if a program accesses the address of constant static data member of integral/enumeration type of any template class. Currently I have not found any workaround for this, despite the provocative proposal to add in the configuration file /boost/config/compiler/visualc.hpp the following lines: #if (_MSC_VER <= 1310) && !defined(_MSC_EXTENSIONS) # define BOOST_NO_INCLASS_MEMBER_INITIALIZATION #endif Can someone support or deny these awful observations??? Some further informations regarding my personal tests: The corresponding data member definition is recognized, if the in-class initialization is changed to an out-of-class initialization, which obviously makes these kind of constants not suitable as part of usual ICE's.... Daniel