Thank you Steven,

2010/3/13 Steven Watanabe <watanabesj@gmail.com>
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.

Is there an other way to do that? I want the project to stay header only so I cannot introduce a cpp file.
Are they some metaprogramming techniques that could lead to the same behavior?

Regards,

Olivier
 

In Christ,
Steven Watanabe

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users