template-meta-programming相关内容
如何使用C ++中的表达式模板实现符号区分 解决方案 通常,您需要一种表示符号的方法(例如,对模板进行编码的表达式,例如 3 * x * x + 42 ),以及可以计算导数的元函数.希望您对C ++中的元编程足够熟悉,以了解它的含义和含义,但是可以给您一个想法: //这应该来自表达式模板templatestruct plus_nod
..
简而言之,我可以将 std :: vector 用作模板参数.以下示例列表用法 tempatestruct container_types{typedef container_tvalue_container_t;typedef container_tpair_c
..
这个问题结合了几段代码,有点复杂,但是我尝试将其尽可能缩小. 由于使用lambda表达式作为输入时,由于函数签名不明确,我正在尝试使用 std :: enable_if 有条件地调用正确的构造函数,但可以将所述lambda表达式的参数设置为可以彼此隐式转换. 这是基于以下问题的尝试:
..
奇怪的重复性模板存在以下问题,当我尝试访问CRTP基类的数据成员时遇到问题. templatestruct Base {int protectedData = 10;};struct Derived:public Base{上市:无效方法(){std :: cout
..
给定两个或更多示例函数,是否可以编写模板代码以推断出作为模板参数提供的函数的自变量? 这是很有启发性的例子: void do_something(int value,double amount){std :: cout
..
我有一个类型特征,它检查给定类型是否是给定类模板的实例: templateC类,类型名T>struct check_is_instance_of:std :: false_type {};模板C类,类型名... Ts>struct check_is_instance_of:std
..
受这个问题的启发,我想知道是否可以引入一些编译时检查来检测是否给定的两个模板实例: 模板班级圣殿...typedef TemplstringInstance;typedef TempldoubleInstance; 是根据相同的定义构建的,或者它们是根据 Templ 模板的不同专业化构建的 因此,基本上,假设的
..
我知道如何编写一个类,该类可以在编译时检测给定的类T是否具有具有给定类型的给定名称的成员,例如 #include模板 :: value>结构has_member_foo{私人的:模板struct helper;模板静态s
..
以下代码尝试使用概念对某个类进行部分专业化,并在该专业化中添加方法,但被clang 11.0.0拒绝: #include模板//注意:先前的模板声明在这里struct S {};模板结构ST{无效f();};模板//错误:类型约束在模板重新声明中有所不同无效S T :
..
我想用另一个 constexpr char [] 成员初始化 constexpr char [] 成员.是否可以在 C ++ 11 或更高版本中进行? #includestruct Base {静态constexpr char ValueOne [] =“一个";静态constexpr char ValueTwo [] ="Two";};模板st
..
我有以下代码可以将lambda转换为C样式的函数指针.这适用于所有lambda,包括具有捕获功能的lambda. #include #include #include template struct lambda_traits : lambda_traits
..
假设我有一个my_struct类型,其中包含一个成员变量f,它是一个函数. f可能是c ++ 11 lambda函数. 由于分配给lambda对象是非法的,所以我想以my_struct的赋值运算符实现这种方式,即当f是lambda时,不对其进行分配. 是否可以构建类型特征is_lambda来检查类型的lambda值? 在代码中: #include
..
我正在尝试为“注册回调" C库中的接口类型.该库使您可以通过接受参数定义列表来注册“可变"函数,这一事实使问题变得非常复杂.然后在回调时,该函数应从类型擦除的参数列表中提取其参数.好老的C ... 我要创建的接口是接受任何函数,甚至是lambda,并自动生成所有机器以正确注册此函数,以及注册参数并在回调期间提取它们.因此,用户只需要键入: register_callback("Call
..
我想确定类型是否定义了带有模板参数的成员函数,但模板参数受SFINAE约束. 示例我有一个类型为A的单个函数foo struct A{ template std::enable_if,ReturnType> foo(T t){ ... } }; Condition是某种情况,例如std::is_pos_v 现在我正
..
#include #include #include template constexpr std::size_t find_from(){ if constexpr (index == std::tuple_si
..
如何编写简单的C ++代码,以具有一定展开因子的方式简单地运行for循环? 例如,我需要编写一个for循环,为数组的每个索引分配i的值,即数组大小的A [i] = i可以说1e6. 现在,我想添加一个假设为20的展开因子.我不想手动编写20行代码并将其迭代5k次.我该怎么做呢?我是否嵌套for循环?如果我使用模板元编程,编译器会自动为我展开一些操作吗?以及如何手动设置展开因子(在编译过程中固
..
执行器类具有类型P的模板,并且在构造函数中采用P对象。 Algo类具有模板E,并且还具有类型E的静态变量。Processor类具有模板T和T的集合。 问题如何定义 Executor > 和 Algo 吗?这可能吗?我看不到定义它的方法,它是一种“无限递归模板参数” 查看代码。 模板 类处理器{ map
..
请考虑以下两个带有构造函数的类,这些构造函数接受完全不同的参数集。 class A { public : A(int x,double y){ //做某事 } }; B类{ public: B(const std :: vector& x){ //做某事 } }; 现在,我想编写一个具有对象的类模板TpC(可能是A或B或其他)。换句话
..
此问题基于 。 目标:我想知道一个类是否具有成员变量 x 。我希望收到 true ,无论此变量是否是 private , public 或受保护的。 方法:如果某个班级有使用以下代码的成员变量: template 结构HasX:std :: false_type {}; 模板 结构H
..
我有一个函数,该函数采用多维 std :: vector ,并且需要将深度(或维数)作为模板参数传递。而不是硬编码此值,我想编写一个 constexpr 函数,该函数将使用 std :: vector 并返回深度作为无符号整数值。 例如: std :: vector> v = { {{0,1},{2,3}}
..