比方说,我想要一个class/struct
类型,从integral_constant<size_t, N>
继承其中N是维度和尺寸如下实现:获取一个std ::矢量/ STD的尺寸::阵列的数目
template<class T>
struct dimension;
template<class T>
struct dimension<vector<T>> : integral_constant<size_t, 1> {};
template<class T>
struct dimension<vector<vector<T>>> : integral_constant<size_t, 2> {};
然后
cout << dimension<vector<int>>::value; // 1
cout << dimension<vector<vector<int>>>::value; // 2
但显然这是不完美的,作为维数可以是无限的(理论上)。有没有办法实现这个通用的解决方案?
建议:我去这个方向,但没有进一步的:
template<class T, class... Tn>
struct dimension<vector<Tn...>> : integral_constant<size_t, sizeof...(Tn)> {};
由于std::vector
具有其他模板参数这是行不通的。
这是我的,尽管如此。它必须受到限制。 – DeiDei
@ T.C。对。固定。 – skypjack