【发布时间】:2022-01-07 19:53:23
【问题描述】:
我有以下代码:
enum type_kind{unkown=-1,carray, multi_carray};
template<class T>
struct detect_carray{
constexpr static int kind=unkown;
};
template<class T, std::size_t N>
struct detect_carray<T[N]>{
constexpr static int kind=carray;
};
现在,我想添加另一个专门用于检测 C 风格的多维数组,即T[a][b]...。
实现这一点的语法是什么?我可以使用可变参数模板吗?
我期望以下行为:
int main()
{
std::cout<<detect_carray<std::vector<int>>::kind;//-1
std::cout<<detect_carray<int[3]>::kind;//0
std::cout<<detect_carray<double[3][5]>::kind;//1
std::cout<<detect_carray<std::complex<double>[3][5][8][16]>::kind;//1
//Correct out: -1011
}
【问题讨论】: