C++11 (または C++) では、完全に指定されていないテンプレート タイプを渡すことができます。具体的には、すべてのテンプレート指定子がまだ定義されていない型を渡したい:
template <std::size_t N, typename ARRAYTYPE>
struct A {
ARRAYTYPE<int, N> int_array;
};
int main() {
A<10, std::array> my_a;
return 0;
}
再定義するだけでうまくいくことはわかっていますが、のどこでも異なるサイズの をARRAYTYPE = std::array<int, 10>
利用することはできません。ARRAYTYPE
A
template <std::size_t N, typename ARRAYTYPE>
struct A {
ARRAYTYPE<int, N> int_array;
ARRAYTYPE<int, 1> tiny_int_array;
};
これは可能ですか?