The following code snippet (from the boost::ublas library) : template<class T1, class T2> struct scalar_divides_assign { static const bool computed ; }; template<class T1, class T2> const bool scalar_divides_assign<T1,T2>::computed = true; gives a defined symbol in the .o file: $ g++-4.1 -c Ublas.cpp -o Ublas.o; nm -C Ublas.o 00000000 D _ZN21scalar_divides_assignIT_T0_E8computedE Which is not the case with g++-4.0 and older. The user gets an "multiple definition of `_ZN5boost7numeric5ublas21scalar_divides_assignIT_T0_E8computedE'" error at link time.
This is a duplicate of PR28016, which has been fixed already. What version of the compiler are you using exactly?
(In reply to comment #1) > This is a duplicate of PR28016, which has been fixed already. What version of > the compiler are you using exactly? > Ubuntu edgy package. $ g++-4.1 --version g++-4.1 (GCC) 4.1.2 20060708 (prerelease) (Ubuntu 4.1.1-8ubuntu1) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Same behaviour was reported on a mailinglist for a Debian version.
Has been fixed in Debian and upstream already. Please talk to your vendor. *** This bug has been marked as a duplicate of 28016 ***