这是我的问题Implement STL functions in variadic template的延续:
如果已经定义了"单层"那么如何为接受长度为N
的数组的N
- 维数组实现下标运算符。下标运算符用作array[indx0][indx1]…[indxN]
。我觉得应该有一个简单的折叠表达式吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
因为它是C ++ 17,所以如果要使其更简单,可以使用constexpr:
template<size_t Idx0, size_t... IdxRest, typename V>
decltype(auto) getval(const V& v)
{
if constexpr (sizeof...(IdxRest) == 0)
{
return v[Idx0];
}
else
{
return getval<IdxRest...>(v[Idx0]);
}
}
int main()
{
int arr[10][10] = { 1,2,3 };
std::vector<int> arr2 = { 1,2,3 };
auto v1 = getval<0, 2>(arr);
auto v2 = getval<1>(arr2);
return 0;
}