jeudi 2 novembre 2017

clang - how to declare a static const int in header file?

Given the following template in a header file, and a couple of specializations:

template<typename> class A {
        static const int value;
};

template<> const int A<int>::value = 1;
template<> const int A<long>::value = 2;

and building with clang-5, it results in errors for each source unit that included the file, all complaining about multiple definitions for A::value and A::value.

At first, I thought that maybe the template specializations needed to be put in a specific translation unit, but on checking the spec, this apparently should be allowed, because the value is a constant integer.

Am I doing something else wrong?

Aucun commentaire:

Enregistrer un commentaire