template-meta-programming相关内容

C ++模板:如何确定类型是否适合子类化

假设我有一些模板类,取决于 T 类型。 T 几乎可以是任何东西: int , int * pair 或 struct lol 它不能 void ,一个引用或任何cv限定。对于一些优化我需要知道,如果我可以子类 T 。所以,我需要一些特征类型 is_subclassable ,确定为基本特征的逻辑组合或通过一些SFINAE技巧。 在原始示例中, int 和 int * 不可 ..
发布时间:2016-10-14 20:50:25 C/C++开发

“我的SFINAE发生了什么” redux:条件模板类成员?

我是新写的模板元编程代码(而不是只读它)。所以我运行一些noob问题。其中一个很好地总结了这个非SO的帖子叫 (注意:我给了我的SFINAE发生了什么事?方法不同的名称只能帮助我的错误诊断在这个“思想实验”示例。请参阅 @ R.MartinhoFernandes的说明为什么您实际上不会在实际中为非重载选择此方法。) #include ..
发布时间:2016-10-14 20:04:44 C/C++开发

自动选择大到足以容纳指定数字的变量类型

有什么方法在C + +定义一个类型,大到足以容纳最多一个特定的数字,可能使用一些聪明的模板代码。例如我想能够写: - Integer :: type dataItem; 并且该类型是否解析为足够容纳指定值的最小类型? p> 背景:我需要使用外部数据文件中的脚本生成一些变量定义。我想我可以让脚本看看这些值,然后使用 uint8_t , uint16 ..
发布时间:2016-10-14 11:42:49 C/C++开发

C ++构造,其行为类似于__COUNTER__宏

我有一组C ++类,每个都必须声明一个唯一的顺序ID作为编译时常量。 为此,我使用 __ COUNTER __ 内置宏,它转换为一个整数,每次出现时递增。 ids不需要遵循严格的顺序。唯一的要求是它们是顺序的,从0开始: class A { public: enum {id = __COUNTER__}; }; class B { public: enum {id = ..
发布时间:2016-10-14 10:29:29 C/C++开发

优化交换机的模板更换

我在我的一个项目中有很多自定义数据类型,它们都有一个共同的基类。 我的数据(来自数据库)有一个数据类型,用基类的枚举来区分。我的架构允许一个特定的数据类型专用于一个派生类或者它可以由基类处理。 当我构造一个我的特定数据类型通常调用构造函数直接: Special_Type_X a = Special_Type_X(“34.34:fdfh-78”); a.getFoo(); ..
发布时间:2016-10-14 10:27:57 C/C++开发

C ++使用boost fusion adapt_struct来迭代到嵌套的struct字段

两个 stackoverflow 答案建议使用fusion adapt_struct来迭代结构字段的方法。方法看起来不错。但是,如何迭代到一个本身是一个结构体的字段? 按照前面的答案,我想出了下面的代码。问题是在“#if 0”子句的代码不编译。作为一个替代解决方案,我创建了“decode()”函数,以获取一个void指针到目标参数。这是可行的,但在编译时丢失类型信息。有更好的解决方案吗? ..

void_t“可以实现概念”?

我正在观看 Walter Brown的CppCon2014的第二部分谈论模板元编程,在此期间他讨论了他的小说 void_t构造的用法。在他的演讲期间,Peter Sommerlad问他一个我不太明白的问题。 (链接直接转到问题,正在讨论的代码直接在此之前发生) Sommerlad问 Walter,这是否意味着我们可以实现现在的概念? p> 哦!我已经做了 ..

在编译时构建和访问类型列表

我试图使用c ++模板元编程实现以下。我希望构建一个类型列表,然后一起收集这些类型,并在列表上做进一步的编译时处理。例如: foo.h: class Foo { ...}; //插入任何代码 bar.h: class Bar {...}; //插入任何代码 main.h: #include“foo.h” #includ ..
发布时间:2016-10-11 23:15:05 C/C++开发

如何对可变参数模板函数的异构参数包进行通用计算?

PREMISE: 在使用可变参数模板后,我意识到实现任何稍微超出琐碎meta-编程任务很快就变得相当麻烦。特别是,我发现自己希望能够通过参数包执行泛型操作,例如 iterate , split 观看 std :: for_each =“http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Static-If-I-Had ..

从元组或可变参数模板参数创建数组初始值设置

我想从一组可变参数中静态嵌入程序代码(最好是ROM部分)中的持久性内存布局(例如Flash或EEPROM设备)的描述,其中自动计算必要的偏移量 目标是创建一个适当的数组初始化器,可以在运行时迭代,而不会对你有限制。 std :: get(std :: tuple) ,这需要编译时索引。 第一种方法 我创建了一个简单的数据项描述符类,它绑定一个特定的ID(应由客户端提供为枚举类型) ..
发布时间:2016-10-11 21:32:00 C/C++开发

什么是C ++模板和Java / C#泛型,哪些是限制的差异?

我读到一篇有趣的文章/主题/从这里讨论我得到了以下几个问题: 什么是Java / C#泛型的局限性 什么是可能的? C ++模板那是不可能的与Java / C#泛型? 修改1 更多推荐的埃里克利珀 有哪些图案,可以用C#泛型,但C ++模板不可能的? 什么是C#的真正的泛型类型和Java的类型擦除泛型类型? 解决方案 首先,你可能需要阅读的 ..
发布时间:2016-09-19 11:39:22 Java开发