引入內聯變量模板的最佳方法是什麼,以便它必須專用於自定義類型?例如,如何爲內聯變量模板創建自定義點?
template<typename T> constexpr inline T max_value_v;
struct S {
int m = 0;
};
static_assert(max_value_v<S>.m == 0);
compiles上GCC。目的是max_value_v<T>
只適用於T
專用。但max_value_v
的聲明也是一個定義(這是默認初始化),所以max_value_v<S>
被接受。
有沒有辦法強制S
的作者專門max_value_v
,以便只給用戶提供目標值max_value_v<S>
?
請注意,我對我的回答並不滿意。有沒有更簡單的方法來實現這一目標? –
注意:'max_value_v'未初始化值,但默認初始化。 – Rakete1111
修好了,謝謝。 –