variadic-templates相关内容
我有一个特征类,即将在可变参数CRTP中使用以扩展SmartPointer类的功能. 此问题是作为 https://stackoverflow.com/a/65373058/5677080 的后续内容创建的 特质类示例: template所属类{上市:使用deleter_type = DELETER;/* ... */}; 这里是我的Smart
..
我将要设计和实现一种智能指针工具包-一组用于定义各种类型的智能指针的类,例如unique_ptr,intrusive_ptr,shared_ptr,observing_ptr,tagd_ptr等.我没有可用的c ++库.我的想法是避免代码重复,使其遵循优雅的设计原则.让我描述一下我的想法. 设计注意事项:我想使用可变的CRTP方法来混合所需的指针功能,特征.对于每个功能集,都应该有一个特征类
..
我正在尝试创建一个函数 AddVector ,该函数明智地添加(可变)数量的vectors.我想我明白了,但是当我得到错误的输出时,我显然没有.我要添加三个双精度矢量,每个矢量的大小为5,包含1 + 2 + 1,因此我希望 4 4 4 4 4 我知道 1.36234e-316 2.0326e-316 4 4 4 显然是错误的(也许是未初始化的mem?) 我使用CppInsig
..
我的目标是定义一个 Recursive 类,该类以 int N 和一种或多种类型的 T,... Ts ,它的行为应类似于 std :: pair 与 类型为 T 的 N 个项目的 std :: array 作为 first 的 ,以及作为 second 的 可选 std :: vector 递归在相同的 N 上以及其余模板参数 Ts ... 上模板化的实例. 在尝试根据上述要求写下该
..
以下代码可在gcc和clang中编译并正常工作,但无法在Visual Studio 2017.7(x86-64)中编译: #include#include#include模板class>struct isVector:公共std :: false_type{};模板struct isVe
..
给定size_t值列表作为可变参数模板参数包,如何根据参数包使元类型的派生类型(例如Matrix)组成元组,使得可变参数的第n个元素生成矩阵 .例如: make_matrix_tuple()== make_tuple(矩阵2,3,矩阵3,4,矩阵4,5); 如何编写带有size_t参数包的make_matrix_tuple函数? 通过派生的类型
..
按照这个问题中的代码,我有一个带有可变模板的 std :: bind 功能.如果我尝试提供带有 auto 返回值的功能模板,则gcc会拒绝该程序: #include模板自动inv(Args ... args)
..
我正在尝试创建一个带有两个对象参数包的函数.有两个模板化的基类,我想将派生类的实例传递给此函数.考虑这个例子. 模板struct First {};模板struct Second {};//其中有一些struct FirstImpl:First 5;{};struct SecondImpl:Second 7;{};模板
..
我实现了一个收集类,该收集类将元组的向量转换为向量的元组(本质上是AOS到SOA的转换).此代码适用于两个模板类的示例.我试图通过使用可变参数模板使其更通用.为此,我需要为成员变量 m_col 创建类型.在C ++ 17中,是否可以将元组转换为向量的元组?因此,此示例中的成员方差 m_col 的类型将根据模板类型自动生成. template类集合{std :: tuple
..
考虑到可变参数模板参数包,我想使用 inline constexpr bool 和
..
在尝试使用C ++ 17折叠表达式时,我尝试实现max sizeof ,其中结果是类型的 sizeof 的最大值.我有一个使用变量和lambda的丑陋折叠版本,但是我无法想到一种使用折叠表达式和 std :: max()来获得相同结果的方法. 这是我的折叠版本: templateconstexpr size_t max_sizeof(){size_t m
..
我遍历了C ++模板独特的书本,我试图了解 std :: array 的演绎指南是如何工作的.关于标准的定义,以下是声明 模板array(T,U ...)->array
..
我试图编写一个lambda来度量任意函数的执行时间.在很多帮助下,我已经针对C ++ 14和具有返回值的函数进行了管理,请参见 如果使用C ++ 11编译器(例如带有-std = gnu ++ 11的g ++)进行编译,则它将使用模板函数,因此在这里可以很好地工作.如果使用C ++ 14编译器(-std = gnu ++ 14)进行编译,它将使用lambda,因此出现以下编译错误消息:
..
我想避免以下代码中的重复项. #includestruct Bar {};模板struct FooClass;模板内联void foo(Args&& ... args){FooClass :: impl(std :: forward(args)...);}//复制1./
..
我有以下问题: #include#include使用命名空间std;模板A级{//...私人的:std :: vector_v = {N_i ...};std :: tuple_t;};int main(){A 1 = 1.一种;} 正如您在上面看到的,我尝试将多个参
..
要扩展灵活的函数参数,有一种使用 std :: initializer_list 的方法.但是我听不懂.谁能以一种可以理解的方式解释这一点? template自动打印(T值,Args ... args){std :: cout {([[&]
..
也许我在这里很幼稚,但是我相信下面的代码应该可以编译: 模板结构测试{std :: tuplefoo;};int main(){struct Test测试;返回0;} 相反,g ++抱怨: test.cpp:5:错误:参数包未使用'...'扩展:test.cpp:5:注意:"T" 我想念什么? 解决方案 您可以通
..
在下面的代码中,我想找到一种更通用的调用GenericPublish__Advertise()的方式,该方式需要一个可变的模板列表.我该怎么做才能改善它? 我想将主题映射到特定类型的发布者: topic [0]->发布者[0] topic [1]->发布者[1] 如此 虽然代码可以正常工作,但我需要手动编写GenericPublish__Advertise()的模板版本,并手
..
我想做这样的事情: templateconst char * toStr(T num){thread_local静态字符rc [someval * sizeof(T)] str ="0x000 ... \ 0";//零的数目取决于T的大小//用str做点什么返回str;} 我猜想我需要做一些模板元编程,但是我不确定从哪里开始. 编辑: 我在这里找到了一
..
在下面的代码中,我正在为int值和对象做乘法可变参数模板.它适用于所有原始类型.它也仅适用于2个对象.但是,当我使用两个以上的自变量对象相乘时,代码不会编译. multiply(1、2、3、4、5、6)//正确运行乘法(A(1),B(1))//正常工作乘法(A(1),B(1),B(1));//编译时错误乘法(A(1),B(1),B(1),B(1));//编译时错误 对于2个以上的对象乘法,
..