Я пытаюсь понять, как точно работает 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 и что это устарело, но есть ли обходной путь, который я могу использовать?