- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有两个关于辅助类的问题 std::tuple_size<std::array>
的 std::array
.
首先,有一个constexpr size()
类中的成员函数 std::array
,为什么需要 std::tuple_size<std::array>
?
其次,是名字tuple_size
误导?
最佳答案
std::tuple_size
的设计目标(及其 friend std::tuple_element
和 std::get
)不仅要处理文字 std::tuple
s,但在任何类似元组的东西上。类似元组的东西通常只意味着它是一种包含固定数量的有序元素的复合类型。
例如,您可以通过查看 structured bindings 如何清楚地看到正在使用的抽象概念。已定义:它们允许分解任何具有 std::tuple_size
的合理实现的东西, std::tuple_element
和 get<I>
.
在这种“类元组”的扩展概念下,只有 std::array
才有意义(和 std::pair
)会将这些特征专门化为 N 个相同类型的元组(resp。大小为 2 的元组)。
关于c++ - `std::tuple_size<std::array>`的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56184539/
当为某个模板显式特化 tuple_size 和 tuple_element 时,我意识到 §14.5.1/4,它是这样写的 In a redeclaration, partial specializa
我有以下代码: class TR_AgentInfo : public tuple { public: TR_AgentInfo() {} TR_AgentInfo( const long lon
这个小程序 https://ideone.com/dqVJbN #include #include #include using namespace std; class MetaData {
我的问题很奇怪而且很短:为什么没有对 std::tuple_size 进行特化以供引用有充分的理由吗? (现在是动机) 我有很多代码看起来像: template::type>::value
为什么 tuple_size 是一个自由特征而不是类中的成员变量/typedef?后者导致 ODR 违规的风险要小得多。 是否有一个具体的用例,其中具有特征 tuple_size 比在类中定义此内联更
是 std::tuple_size 的特化和 std::tuple_element允许自定义类型?我想是的,但我想绝对确定,我找不到任何具体信息。 示例(省略了命名空间、成员函数和 get 重载):
我有两个关于辅助类的问题 std::tuple_size的 std::array . 首先,有一个constexpr size()类中的成员函数 std::array ,为什么需要 std::tupl
我的代码看起来像下面这样: #include class DoubleArray: std::array { public: void clear() { fill(0.0)
我在实现递归模板(模板结构中的函数)时遇到问题,它将被 std::tuple_size 终止。 这是代码片段(我简化了代码,以强调问题): template struct Helper
编辑附加:问题标题是“Visual Studio 编译器或 Clang 是否有不正确的行为”- 但已更改。 所以我在这里补充一下,clang 和 gcc 按照我的预期编译它,但 VS 没有。 我有以下
我在命名空间中有一个类模板 我在该 namespace 内有一个非成员函数,它返回一个 std::tuple的 std::shared_ptr(s)> 我调用了函数 F()并将其结果( std::tu
我有一个自定义类,它有一个类似元组的接口(interface)。因为我希望我的代码尽可能通用,所以我认为将我的算法基于函数 std::get、std::tuple_size 是个好主意>, std::
Clang 的行为“未定义模板 smthg”是否有(干净的)解决方法? 代码示例: https://godbolt.org/z/GGs7ndKE4 (复制/粘贴见下文) 额外的见解: 这个问题是不是
在下面的代码中,为什么第二个和第三个概念会产生编译错误? #include template concept IsPair1 = std::tuple_size::value == 2; temp
在下面的代码中,为什么第二个和第三个概念会产生编译错误? #include template concept IsPair1 = std::tuple_size::value == 2; temp
为什么 std::initializer_list不支持std::get<> , std::tuple_size和 std::tuple_element ?在constexpr中用得很多现在的表达式,
我是一名优秀的程序员,十分优秀!