考慮以下幾點:公共接入
template<int T>
class Test {
public:
constexpr static int A = T;
};
int main(int argsc, char** args) {
std::cout << Test<2>::T << std::endl; // Option 1
std::cout << Test<2>::A << std::endl; // Option 2
}
爲什麼不選擇1個編譯?看來static constexpr A
只是一個額外的步驟。 T
是否不公開?
有沒有比上面創建可公開訪問的成員A
更清潔的方式獲得T
?
您不能在類之外訪問模板參數。 – plasmacel
@plasmacel - 爲什麼這是真的?創建'A'的步驟似乎沒有必要。 – Jack
您也可以創建一個允許檢索模板參數的特徵。 'template TestTrait;模板 TestTrait > struct {constexpr static int value = N; };' –
Jarod42