статическое определение constexpr C ++ 11 с обходным путем шаблонов - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь понять, как точно работает C ++ 11 в отношении статического constexpr.Насколько я понял, если у вас есть что-то вроде:

template<class T>
struct A
{
static constexpr auto mytuple = std::make_tuple(1,2.0,3);
};
// mytuple will be used by other methods, and it might depend on T

, вам также нужно определить mytuple в файле .cpp, что-то вроде:

template<class T>
constexpr decltype( A<T>::mytuple) A<T>::mytuple; 

Но что, если я специализируюсьА в других файлах нужно ли мне снова определять их для каждого типа?казалось, что он работает без определения специализаций, но когда я использовал его с другими функциями шаблона, у меня возникли проблемы компиляции / компоновки.

Я знаю, что это было исправлено в C ++ 17 и что это устарело, но есть ли обходной путь, который я могу использовать?

...