Я хотел бы сделать это:
template <typename T>
struct S
{
...
static double something_relevant = 1.5;
};
но я не могу с тех пор something_relevant
не имеет целочисленного типа. Это не зависит от T
, но существующий код зависит от него являющийся статическим членом S
.
Так как S является шаблоном, я не могу поместить определение в скомпилированном файле. Как я решаю эту проблему?
Просто определите его в заголовке:
template <typename T>
struct S
{
static double something_relevant;
};
template <typename T>
double S<T>::something_relevant = 1.5;
Поскольку он является частью шаблона, как и все шаблоны, компилятор убедится, что он определен только один раз.
Это будет работать
template <typename T>
struct S
{
static double something_relevant;
};
template<typename T>
double S<T>::something_relevant=1.5;