template-meta-programming相关内容

使用C ++中的表达模板进行符号区分

如何使用C ++中的表达式模板实现符号区分 解决方案 通常,您需要一种表示符号的方法(例如,对模板进行编码的表达式,例如 3 * x * x + 42 ),以及可以计算导数的元函数.希望您对C ++中的元编程足够熟悉,以了解它的含义和含义,但是可以给您一个想法: //这应该来自表达式模板templatestruct plus_nod ..
发布时间:2021-04-19 20:56:04 C/C++开发

如何在构造函数上正确使用std :: enable_if

这个问题结合了几段代码,有点复杂,但是我尝试将其尽可能缩小. 由于使用lambda表达式作为输入时,由于函数签名不明确,我正在尝试使用 std :: enable_if 有条件地调用正确的构造函数,但可以将所述lambda表达式的参数设置为可以彼此隐式转换. 这是基于以下问题的尝试: ..
发布时间:2021-04-19 20:31:47 C/C++开发

用于检测模板专业化的模板元功能

受这个问题的启发,我想知道是否可以引入一些编译时检查来检测是否给定的两个模板实例: 模板班级圣殿...typedef TemplstringInstance;typedef TempldoubleInstance; 是根据相同的定义构建的,或者它们是根据 Templ 模板的不同专业化构建的 因此,基本上,假设的 ..

如何在编译时检测类型是否为lambda表达式?

假设我有一个my_struct类型,其中包含一个成员变量f,它是一个函数. f可能是c ++ 11 lambda函数. 由于分配给lambda对象是非法的,所以我想以my_struct的赋值运算符实现这种方式,即当f是lambda时,不对其进行分配. 是否可以构建类型特征is_lambda来检查类型的lambda值? 在代码中: #include ..
发布时间:2021-02-15 21:05:39 C/C++开发

调用无实例的无状态Lambda(仅类型)

我正在尝试为“注册回调" C库中的接口类型.该库使您可以通过接受参数定义列表来注册“可变"函数,这一事实使问题变得非常复杂.然后在回调时,该函数应从类型擦除的参数列表中提取其参数.好老的C ... 我要创建的接口是接受任何函数,甚至是lambda,并自动生成所有机器以正确注册此函数,以及注册参数并在回调期间提取它们.因此,用户只需要键入: register_callback("Call ..

如何使用模板元编程展开for循环

如何编写简单的C ++代码,以具有一定展开因子的方式简单地运行for循环? 例如,我需要编写一个for循环,为数组的每个索引分配i的值,即数组大小的A [i] = i可以说1e6. 现在,我想添加一个假设为20的展开因子.我不想手动编写20行代码并将其迭代5k次.我该怎么做呢?我是否嵌套for循环?如果我使用模板元编程,编译器会自动为我展开一些操作吗?以及如何手动设置展开因子(在编译过程中固 ..
发布时间:2020-11-10 00:12:01 C/C++开发

C ++。当类T需要A型模板参数时,如何为A类定义T型模板参数?

执行器类具有类型P的模板,并且在构造函数中采用P对象。 Algo类具有模板E,并且还具有类型E的静态变量。Processor类具有模板T和T的集合。 问题如何定义 Executor > 和 Algo 吗?这可能吗?我看不到定义它的方法,它是一种“无限递归模板参数” 查看代码。 模板 类处理器{ map ..