次のことを考えてみましょう:テンプレート価値のパブリックアクセス
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
などの一般にアクセス可能なメンバーを作成する方法よりもですか?
クラス外のテンプレートパラメータにアクセスすることはできません。 – plasmacel
@plasmacel - なぜそれは本当ですか? Aを作成するステップは不要です。 – Jack
また、テンプレートパラメータを取得できるような特性を作成することもできます。 'template TestTrait;テンプレート TestTrait > struct {constexpr static int value = N; }; ' –
Jarod42