使用数组作为元组成员:有效的C++11元组声明
Using array as tuple member: Valid C++11 tuple declaration?
下面的代码用G++4.7.2:编译得很好
#include <tuple>
std::tuple<float,int[2]> x;
然而,使用clang++3.2时,会产生以下错误:
错误:数组初始值设定项必须是初始值设定值列表
如果从元组声明中删除float
类型,则错误将消失。上面的元组声明有效吗?
($CXX-std=c++11-c file.cpp)
我认为标准中没有任何内容禁止您声明。然而,一旦您尝试初始化、复制、移动或分配元组,就会遇到问题,因为对于这些操作,元组的所有成员类型都必须能够分别用作初始化器、可复制构造的、可复制分配的和可移动分配的(§20.4.2.1)。数组的情况并非如此。
您最好使用std::array
而不是C样式数组:
#include <tuple>
#include <array>
std::tuple<float,std::array<int,2> > x;
相关文章:
- C++:TypeDef使用元组
- Pybind11:将元组列表从Python传递到C++
- 重载元组索引运算符-C++
- 使用无符号字符数组有效存储内存
- 在C++中,如何通过几种类型从元组中选择多个元素
- 将fold表达式与std::一起用于两个元组
- std::ranges::elements_view,用于自定义类似元组的数据
- 将元组的向量转换/构造为堆
- 专用于 std 元组的模板,而无需用户执行remove_cvref
- 将元组的向量构造成堆
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 将元组类型扩展为可变参数模板?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 类内部和外部静态 constexpr 元组之间的差异
- 为什么此元组到引用元组 (std::tie) 转换有效?
- Boost::P ython,将元组转换为Python有效,矢量<tuple>不
- 通过移动有效地将元组引入容器
- 如何有效地实现 std::tuple,使得空类型的元组本身就是空类型
- 如何根据表达式在Boost.Hana中是否有效来过滤类型元组
- 使用数组作为元组成员:有效的C++11元组声明