- void func(std::array<float, 3>& a)
- {
- float x = a[0];
- std::cout << x << std::endl;
- }
这是一个简单的示例函数,编译时,a[0]这里出错了,没有与这些操作数匹配的"[]"运算符。
因为array显然可以用"[]",类似代码在其他地方运行也很好,所以折腾好久。
这里说一下结果:
添加#include
为什么没有include array没有编译报错呢,因为文件前面有一个#include <utility>,
- // TUPLE INTERFACE TO array
- template <class _Ty, size_t _Size>
- class array;
- // CLASS TEMPLATE array
- template <class _Ty, size_t _Size>
- class array { // fixed size array of values
- public:
- using value_type = _Ty;
- using size_type = size_t;
- using difference_type = ptrdiff_t;
- using pointer = _Ty*;
- using const_pointer = const _Ty*;
- ... ...
- }
utility里有array的声明,所以不报错,但这个声明是不完整类型。
不完整类型只能用于定义指针和引用,要使用这个类型,必须#include