Как инициализировать статический член класса шаблона с помощью конструктора не по умолчанию - PullRequest
0 голосов
/ 23 октября 2019

У меня есть класс, который должен иметь член класса static пользовательского шаблонного класса с конструктором не по умолчанию. У меня проблема с инициализацией этого члена:

template <typename T> class Value{
  T value;

  private:
    Value(T initialValue) : value(initialValue){
      std::cout << "VALUE: value inited" << std::endl;
    }
    friend class Values;
};        

class Values{
  public:
    static Value<double>& testValue() = Value<double>::value(0.0);
};

Мне известно о "проблеме статического порядка инициализации" по этой ссылке:

https://isocpp.org/wiki/faq/ctors#static-init-order-on-first-use

РЕШЕНИЕby @uneven_mark -> Инициализировать статические переменные в классе C ++?

class Values{
  public:
   static Value<double> testValue();
};
Value<double> Values::testValue = 0.0;
...