template-meta-programming相关内容
假设我有一些模板类,取决于 T 类型。 T 几乎可以是任何东西: int , int * pair 或 struct lol 它不能 void ,一个引用或任何cv限定。对于一些优化我需要知道,如果我可以子类 T 。所以,我需要一些特征类型 is_subclassable ,确定为基本特征的逻辑组合或通过一些SFINAE技巧。 在原始示例中, int 和 int * 不可
..
我是新写的模板元编程代码(而不是只读它)。所以我运行一些noob问题。其中一个很好地总结了这个非SO的帖子叫 (注意:我给了我的SFINAE发生了什么事?方法不同的名称只能帮助我的错误诊断在这个“思想实验”示例。请参阅 @ R.MartinhoFernandes的说明为什么您实际上不会在实际中为非重载选择此方法。) #include
..
给定一个模板元程序(TMP),C ++编译器生成构建统计信息,计算实例化的类的数量?还是有其他方法自动获得这个号码?所以对于例如。 #include template struct fact {enum {value = N * fact :: value}; }; 模板结构事实 {enum {value = 1};
..
简介 我正在寻找模式将C ++类型特征转换为可变对应。使用方法来处理问题是非常理想的,生成式编程模式可以自动完成任务。 示例 采取以下措施: std :: is_same :: value; 我想写一个像这样的trait: std :: are_same :: value; 目
..
我想创建一个返回整数幂的函数。 请阅读fmuecke的解决方案 c ++中的整数幂 但是,我想把他的解决方案推广到任意类型T. 由于c ++ 11有constexpr,我想这是可能。 朴素,我尝试了像 类T, inline constexpr T pow(const T x){ return pow(x)* x; } template
..
有什么方法在C + +定义一个类型,大到足以容纳最多一个特定的数字,可能使用一些聪明的模板代码。例如我想能够写: - Integer :: type dataItem; 并且该类型是否解析为足够容纳指定值的最小类型? p> 背景:我需要使用外部数据文件中的脚本生成一些变量定义。我想我可以让脚本看看这些值,然后使用 uint8_t , uint16
..
我有一组C ++类,每个都必须声明一个唯一的顺序ID作为编译时常量。 为此,我使用 __ COUNTER __ 内置宏,它转换为一个整数,每次出现时递增。 ids不需要遵循严格的顺序。唯一的要求是它们是顺序的,从0开始: class A { public: enum {id = __COUNTER__}; }; class B { public: enum {id =
..
我在我的一个项目中有很多自定义数据类型,它们都有一个共同的基类。 我的数据(来自数据库)有一个数据类型,用基类的枚举来区分。我的架构允许一个特定的数据类型专用于一个派生类或者它可以由基类处理。 当我构造一个我的特定数据类型通常调用构造函数直接: Special_Type_X a = Special_Type_X(“34.34:fdfh-78”); a.getFoo();
..
我试图在编译时使用C ++ 11的 random 库预先计算随机值。我主要是下面的例子。我在这里做错了什么? using namespace std; #include #include #include 矢量兰德斯 typedef std :: mt19937_64 RNG; uint64
..
两个 stackoverflow 答案建议使用fusion adapt_struct来迭代结构字段的方法。方法看起来不错。但是,如何迭代到一个本身是一个结构体的字段? 按照前面的答案,我想出了下面的代码。问题是在“#if 0”子句的代码不编译。作为一个替代解决方案,我创建了“decode()”函数,以获取一个void指针到目标参数。这是可行的,但在编译时丢失类型信息。有更好的解决方案吗?
..
我正在观看 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
..
我被告知C ++中的模板系统在编译时是Turing-complete。这在此帖子中以及在
..
是否可以检查类型是否是特定模板的实例化? 我有一个类模板,其中一个模板参数必须是实例化特定模板,或一些其他类型。例如,考虑一个类型串的简单定义: struct null_type; template struct typelist { //尾必须是类型串或null_type typedef头头;
..
我想编写一个模板,它将在编译时确定类型是否为stl容器。 我有以下代码: / p> struct is_cont {}; struct not_cont {}; template struct is_cont {typedef not_cont result_t; }; 但我不知道如何为 std创建必要的专业化: :vect
..
PREMISE: 在使用可变参数模板后,我意识到实现任何稍微超出琐碎meta-编程任务很快就变得相当麻烦。特别是,我发现自己希望能够通过参数包执行泛型操作,例如 iterate , split 观看 std :: for_each =“http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Static-If-I-Had
..
在 http://stackoverflow.com/a/1967183/134841 中,提供了一种解决方案,用于静态检查成员存在,可能在类型的子类中: template class has_resize_method { class yes {char m;}; class no {yes m [2];}; struct BaseMix
..
我想从一组可变参数中静态嵌入程序代码(最好是ROM部分)中的持久性内存布局(例如Flash或EEPROM设备)的描述,其中自动计算必要的偏移量 目标是创建一个适当的数组初始化器,可以在运行时迭代,而不会对你有限制。 std :: get(std :: tuple) ,这需要编译时索引。 第一种方法 我创建了一个简单的数据项描述符类,它绑定一个特定的ID(应由客户端提供为枚举类型)
..
在此答案中,我根据类型的 is_arithmetic property: template enable_if_t :: value,string> stringify(T t){ return to_string(t); } template enable_if_t
..
我读到一篇有趣的文章/主题/从这里讨论我得到了以下几个问题: 什么是Java / C#泛型的局限性 什么是可能的? C ++模板那是不可能的与Java / C#泛型? 修改1 更多推荐的埃里克利珀 有哪些图案,可以用C#泛型,但C ++模板不可能的? 什么是C#的真正的泛型类型和Java的类型擦除泛型类型? 解决方案 首先,你可能需要阅读的
..