
AMDG Olivier Tournaire wrote:
I am currently having problem with a static const class member (in a header only project):
// type.hpp template< typename Property > struct property_base { typedef Property type; };
struct some_type : property_base< uint32_t > { BOOST_STATIC_CONSTANT( type, first_value = 1 ); BOOST_STATIC_CONSTANT( type, second_value = 2 ); };
// main.cpp #include "type.hpp" ... int main(int argc, char** argv) { BOOST_CHECK_EQUAL( 1 , some_type::first_value ); }
This produces a link error (g++ 4.3.4): undefined reference to some_type::first_value. Everything is fine with visual ...
If I add const some_type::type some_type::first_value; after the struct definition, it compiles and links fine. However, would it produce a multiple definition link error in some cases? Could you please help?
Putting the definition in a header can indeed cause a multiple definition error. The definition needs to be in a cpp file. In Christ, Steven Watanabe