8
我有一個類來描述某種類型的某些特徵。專業靜態constexpr數據成員
template<typename T>
struct my_traits
{
static constexpr int some_trait = 0;
static constexpr T min() { return std::numeric_limtis<T>::min(); }
static constexpr T max() { return std::numeric_limits<T>::max(); }
};
我想專門my_traits::some_trait
但是當我嘗試:
template<> constexpr int my_traits<int>::some_trait = 1;
編譯器抱怨my_traits::some_trait
已經有一個初始化。當然,我可以通過做專門的:
template<>
struct my_traits<int>
{
static constexpr int some_trait = 1;
// min and max
};
但我必須重新定義所有其他的功能,即使他們將是完全一樣的。
那麼我怎樣才能專注於my_traits<int>::some_trait
而不必重複min
和max
?
AFAIK這是不可能的。一個'constexpr'變量必須在其聲明中初始化或構造。 –
'static constexpr int some_trait = my_helper :: value;' –
您可以從'constexpr'函數或實用程序類初始化它,它是專門用於'int'類型的' – Niall