按类型和歧义提取元组的元素
Extracts the element of a tuple by type and ambiguity
文章指出,对于免费的std::get
函数重载(从4-6项),它们
提取类型为t的元组t的元素。如果元组中有多个该类型的元素,则编译失败。
最后一句话是要求还是可能?
我问这个问题是因为std::get< int >(std::make_tuple(1, 2))
通过clang++ -std=gnu++1z -stdlib=libc++
编译得很好(实例)。这个元组的行为是一个libc++错误还是符合标准?
根据标准§20.4.2.6/8,要求是:
要求:类型T在Types....中只出现一次否则,程序是病态的。
所以你的程序是病态的。
标准甚至提供了一个与你的情况非常相似的例子:
const tuple<int, const int, double, double> t(1, 2, 3.4, 5.6);
const int &i1 = get<int>(t); // OK. Not ambiguous. i1 == 1
const int &i2 = get<const int>(t); // OK. Not ambiguous. i2 == 2
const double &d = get<double>(t); // ERROR. ill-formed
,如果你插入Clang编译器。
相关文章:
- 如何基于元组元素进行递归?
- 元组元素是只读的?
- 在 Hana 中满足谓词的元组元素的索引序列
- 如何部分专业化功能以用元组元素作为参数调用功能
- 匹配部分专用化以按类型替换元组元素
- 仅当元组中存在该类型时,将功能应用于元组元素
- 获取std ::元组元素作为std ::变体
- 获取对元组元素的引用
- 用std :: apply迭代元组元素
- 检查是否所有 std::元组元素都满足条件 + 设计问题
- 查找元组元素 C++ 的最大值
- 如何按类型为元组元素创建专用函数
- 在元组向量中查找特定的元组元素
- 将多态函数应用于每个元组元素的结果类型
- 推导出 C++11 中元组元素的类型
- 通过模板成员函数访问私有元组元素
- 通过索引 C++11 访问元组元素
- 按类型获取元组元素(pre C++0x)
- 可变模板:选择具有适当方法的元组元素类型
- 获取元组元素类型的索引?