c ++ 14 static constexpr auto с использованием odr - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть следующий код c ++ 14:

template<typename T>
struct Test{
    static constexpr auto something{T::foo()};
};

Это прекрасно, при условии, что T::foo() также constexpr.

Теперь у меня есть этоsomething используется ODR, поэтому мне нужно предоставить объявление пространства имен.Какой синтаксис я должен использовать?

template<typename T>
constexpr auto Test<T>::something;

Не работает.Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

А как насчет прохождения через using определенное имя типа?

template <typename T>
struct Test
 {
   using someType = decltype(T::foo());

   static constexpr someType something{T::foo()};
 };

template<typename T>
constexpr typename Test<T>::someType Test<T>::something;
...