c++ - 有没有办法在c++中推断出数组的单个元素的类型

标签 c++ templates c++11 sfinae typetraits

我在推导 c++ 数组的单个元素的类型时遇到问题。

我想实现以下目标:

template <class T>
struct array_element { };

template <class T>
struct array_element<T[]> {
   using type = T;
};

int main() {
   int a[5] = {1, 2, 3, 4, 5};
   array_element<decltype(a)>::type element = a[0];
}

但是代码显然不能编译(int[5]不匹配T[])...

最佳答案

你需要一个额外的参数来进行特化:

template <class T, size_t N>
struct array_element<T[N]> {
   using type = T;
};

或者:

std::remove_reference<decltype(a[0])>::type element = a[0];

或者:

auto element = a[0];

关于c++ - 有没有办法在c++中推断出数组的单个元素的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411841/

相关文章:

C++ 内联基类方法必须显式解析?

c++ - 这是(枚举 : char {}) a gcc bug?

c++ - 如何从一组线段创建封闭区域(凸多边形)?

c++ - 在 `for` 循环内递增后,迭代器结束检查失败

java - 链接语言

c++ - *nix 上的模板方法特化

c++ - 有没有办法在 C++ 中同时为多个模板分配一个类型?

c++11 - 我可以使用 using 关键字对模板进行部分专门化吗?

c++ - 为什么模板模板参数不允许 'typename'在参数列表之后

c++ - 我在这段代码中要求一个数字,如果用户给的是一封信,我该怎么办?