类型特征是语法扩展,允许开发人员在编译时确定类型的各种特征。 C ++支持由编译器支持和一组库模板的组合提供。通过标题<type_traits>提供对类型特征的访问
请考虑以下静态断言:static_assert(std :: is_convertible_v ); static_assert(STD :: is_convertible_v ); static_assert(STD:...
我想通过shared_ptr使用type_traits来重载。 struct A {A(int i):x(i){} int x; }; int main(){A a {4}; auto b = std :: make_shared(7); A& c = a; ...
//test.cpp #include double * func(){} static_assert(std :: is_same :: value,“”); int main(){}编译命令:g ++ -std = c ++ 11 -c test.cpp ...
假设我正在编写以下模板化函数:class A {/ * ... * /}; // ...等...模板 void foo(){bool C_inherits_A = / * magic * /; if(C_inherits_A){...
是否可以写一个类型特征,比如is_callable 它告诉对象是否定义了operator()?如果调用运算符的参数是事先知道的,那么很容易,但不是......
我总是认为像std :: is_same,std :: is_void或std :: is_aggregate这样的类型应该从std :: integral_constant继承,或者更具体地来自std :: bool_constant。 ...
我已经看到,为了检查类型T是否是我可以使用的类:bool isClass = std :: is_class ::值;它对类和结构都返回true。我知道在C ++中它们几乎就是......
在c ++ 17中,我有is_invocable来匹配函数指针,lambdas和functor。但是,如果我被困在c ++ 14上怎么办?我是否有类型特征,或者我可以写一个,这将匹配所有这些?我有 ...
我正在编写一个C ++ 11 STL兼容的分配器,我想知道如何检测安全的类型,不要调用它们的析构函数(在分配器中) ::破坏方法。)我已经......
在矢量上使用is_copy_constructible时出现误报
类型特征是否应该能够处理诸如std :: vector <std :: unique_ptr之类的情况 >并检测到它不是可复制构造的?以下是https://ideone.com/gbcRUa上的一个示例(...
为什么traits :: access无法编译(c ++)?
我现在正在学习如何使用boost :: geometry库,我正在学习这个教程,其中引入了类型特征以使代码更通用。例如,下面的距离函数是......
我听说过某个地方,使用新的C ++ 1z语法,很容易检查是否在可变参数模板参数包中传递了一个类型 - 显然你可以使用接近一行长的代码来做到这一点。 ...
为什么`std :: is_function_v`无法按预期工作?
#包括 #包括 #包括 using namespace std;模板 bool f(T && v){return is_function_v
最近我遇到了讨论is_streamable类型特征的问题。所以我决定实现我自己的版本并提出下一个解决方案来检查是否可以从std ::中读取类型...
有没有办法获得一个类的字段数? struct Base {char a; int b; }; struct Derived:Base {std :: string c; }; static_assert(NUM_FIELDS :: value == 2); ...
我发现很多嵌套的std :: conditional_t很难读,所以我选择了一个不同的模式(在自动返回类型的函数上调用decltype):template 汽车...
请考虑以下测试代码://预处理器#include #包括 //没有类型别名模板的结构 struct invalid {}; // 结构体 ...
C ++标准库具有std :: is_constructible 检查是否可以从给定类型构造一个类作为参数。例如,如果我有一个MyClass类,它有...
我只是想知道标准是否已经提供了一个。我知道很容易自己制作一个//用于C ++ 03,使用 和std :: tr1 #include ...
我如何可靠地对任何不是字符串文字的东西进行static_assert?例如,在下面的代码中,我试图包装标准断言宏,但静态拒绝任何东西...