比方說,我想要一個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