typetraits相关内容

是否可以使用类型traits来检查类型是否为容器?

我可以使用C ++ Type Traits来检查类型是否是类似STL的容器?我已经知道了GCC的内置 __ is_class ,但我想是如果可能的话更具体一点。 解决方案 您可以创建自己的traits类来检查集装箱接口的类型。这将涉及验证,某些相关类型(如集装箱:迭代)存在并验证某些表达式(如 container.empty())是有效的(即,他们编译没有错误)。各种SFINAE技术可用于 ..
发布时间:2016-10-14 20:25:10 C/C++开发

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

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

其中< type_traits>无法实现没有编译器钩子?

C ++ 11提供标准 。 其中哪些不可能无需编译器挂钩即可实现? 注意1:通过编译器挂钩我是指任何非标准的语言功能,如 __ is_builtin ... 。 注意2:其中许多可以无钩子实现(请参阅 C ++模板元编程的第2章和/或第2章现代C ++设计)。 注意3: spraff answer 在此前问题中引用 ..
发布时间:2016-10-14 12:04:11 C/C++开发

c ++:'std :: is_fundamental'的替代品?

在模板类中的函数中,我试图区分原始类型和其他类型。 在c ++ 11中,您可以: if(std :: is_fundamental :: value) { //将其视为原始 } else { //否则 } 请更正我,如果我错了,这不仅是在c ++ 11。 在早期版本的c ++中有另外一个选择吗? 解决方案 您可以使用 Boo ..
发布时间:2016-10-14 11:22:45 C/C++开发

特性检查模板类的某些特化是否是特定类的基类

在现代STL中有 std :: is_base_of 。它允许我们确定第二个参数是从第一个参数派生,还是它们是相同的类,否则,确定它们之间没有这样的关系。 是否可以确定一个类是否来自某个具体的模板类,而无需区分哪个具体的实际参数涉及到它的专业化? 说, / p> 模板 struct B {}; 和 temp ..
发布时间:2016-10-14 10:46:11 C/C++开发

如何写`is_complete`模板?

回答这个问题后,我试图找到在Boost库中的is_complete 模板,我意识到在Boost.TypeTraits中没有这样的模板。为什么Boost库中没有这样的模板?它应该是什么样子? //!检查类型是否完整 模板 struct is_complete { static const bool value =(sizeof(T)> 0); }; ..
发布时间:2016-10-13 11:17:52 C/C++开发

为什么没有std :: is_struct类型trait?

我已经看到,为了检查类型 T 是一个类,我可以使用 bool isClass = std :: is_class :: value; 对于类和结构体都返回true。我知道在C ++他们几乎是一样的东西,但我想知道为什么他们之间没有区别在类型特征。 解决方案 对于类和结构体都返回true。我知道在C ++他们几乎是一样的东西,但我想知道为什么他们之 ..
发布时间:2016-10-13 10:18:02 C/C++开发

什么是具有两个参数的decltype?

编辑,以避免混淆: decltype 会不接受两个参数。请参阅解答。 以下两个结构可用于检查类型 T 在编译期间: //非模板化辅助结构: struct _test_has_foo { template 静态自动测试(T * p) - > decltype(p> foo(),std :: true_type()); template ..
发布时间:2016-10-11 23:15:41 C/C++开发

平凡vs.标准布局vs. POD

具体来说,我想确定 new T是什么?对于任何模板参数 T ,不同于 new T()。哪个类型特征 is_trivial , is_standard_layout 和 is_pod 我选择? (作为一个侧面的问题,这些类型traits是否可以没有编译器魔法?) 解决方案 我不认为它可以用真正的外行人的术语,至少没有一个很多额外的解释。一个重要的点是静态和动态初始化,但解释说,对一个外 ..
发布时间:2016-10-11 23:03:09 C/C++开发