问题标签 [typetraits]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 C++ 中检查成员是否存在
可能重复:
SFINAE 检查继承的成员函数
如果类中存在特定成员,我想执行编译时检查。我找到了一些这样的解决方案: 是否可以编写模板来检查函数的存在?
但他们都有自己的缺点。是否有机会(独立于平台)检查成员是否存在,即使该成员是由基类继承的?
编辑:似乎我必须在类型安全之间进行选择,而不检测从基类继承的成员 (1) 或没有类型安全但能够检测到该成员 (2)。这让我很沮丧:
EIDT2:“可能重复”中提供的解决方案不能解决我的问题。我需要完整的类型安全和检测从基类继承的成员。
c++ - 区分指向 C++ 中重载成员函数的指针
我想区分 C++ 模板结构中的重载成员函数。如果此方法存在get_pointer
,则专用结构中的静态方法distinguish_foo
应返回一个指针。否则我想返回一个指向.
我怎样才能做到这一点?derived::foo
pseudo::foo
c++ - 如何确定类型是否派生自模板类?
如何确定类型是否派生自模板类?特别是,我需要确定模板参数是否std::basic_ostream
作为基类。通常std::is_base_of
是工作的工具。但是,std::is_base_of
仅适用于完整类型而不适用于类模板。
我正在寻找这样的东西。
我敢肯定这可以做到,我想不出怎么做。
c++ - 提取可变参数模板参数包并在类型特征元函数中的另一个可变参数模板中使用它?
我想确定任何可变参数类模板是否是另一个类的基础。通常我会使用 std::is_base_of,但我认为我的用例不适合,而且我不确定 std 或 boost 中是否已经有东西可以处理这个问题。我希望可变参数基类模板的参数包来自另一个可变参数类模板。这是一些示例代码,希望能解释我想要做什么:
用法:
胆量:
这可能吗?
c++ - 提升 type_traits is_array
我一直在尝试浏览 Boost type-traits 标头,鉴于无数#define 提供的强烈不可读性,我现在感觉很恶心。然后还有一些#define。
具体来说,我有兴趣弄清楚以下 3 个特征:类型 T 是数组、类还是枚举。
任何人都可以帮助提出一些破译明显疯狂背后的方法的方法吗?就像你如何从类型中找出特征背后的理论,任何相关的阅读材料等。
c++ - 可变参数模板和类型特征
我目前有一个可变参数函数,它接受任意数量的任意类型的参数(duh),但是,我想将类型限制为仅 POD 的类型,并且与 void* 的大小相同或更小。
void* 检查很简单,我只是这样做了:
但是我不知道如何对 std::is_pod 做同样的事情。
这可能吗?
c++ - 是否有类型特征可以立即删除顶级 cv 和引用?
我只想知道标准是否已经提供了一个。我知道自己做一个很容易
但我想我在那里忘记了一些东西或者顺序错了,所以如果有一个准备好的,那就太好了。
c++ - 在 C++ 中可以使用条件 typedef 吗?
这个问题与c ++有关
有一个库,它声明了一个名为 Solver < TS,FS > 的类。求解器是另一个类域的成员(由我编写)
现在有很多域都有一个成员“int region”
我想做的是取决于区域的值,我想让求解器接受 TS 和 FS 的不同参数。我在想一些事情
然后将其用作
但是,由于 if 的范围,我猜这个结构是没用的。但是,我想不出更好的方法来做到这一点。有什么建议么?
所有不同的 TS 和 FS 都有相同的接口。所以我不必担心内部代码。
c++ - 琐碎与标准布局与 POD
通俗的讲,琐碎类型、标准布局类型和 POD 有什么区别?
具体来说,我想确定是否new T
不同于new T()
任何模板参数T
。我应该选择哪种类型is_trivial
的特征?is_standard_layout
is_pod
(作为一个附带问题,这些类型特征中的任何一个都可以在没有编译器魔法的情况下实现吗?)
c++ - C++ 模板:如何确定一个类型是否适合子类化
假设我有一些模板类,具体取决于 type T
。 T
几乎可以是任何东西:int
、、int*
或;它不能是,参考或任何 cv 限定的。对于一些优化,我需要知道我是否可以子类化. 所以,我需要一些 trait type ,确定为基本特征的逻辑组合或通过一些 SFINAE 技巧。pair <int, int>
struct lol
void
T
is_subclassable
在原始示例中,int
andint*
是不可子类化的,whilepair <int, int>
和struct lol
are。
编辑:正如 litb 在下面指出的那样,联合也不是可子类化的,T
也可以是联合类型。
如何编写我需要的特征类型?