typetraits 相关问题

类型特征是语法扩展,允许开发人员在编译时确定类型的各种特征。 C ++支持由编译器支持和一组库模板的组合提供。通过标题<type_traits>提供对类型特征的访问

为什么C ++中的类型可转换性不可传递?

请考虑以下静态断言:static_assert(std :: is_convertible_v ); static_assert(STD :: is_convertible_v ); static_assert(STD:...

回答 2 投票 2

enable_if和自动返回类型?

我想通过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; ...

回答 1 投票 1

使用C ++ 11 is_same检查函数签名?

//test.cpp #include double * func(){} static_assert(std :: is_same :: value,“”); int main(){}编译命令:g ++ -std = c ++ 11 -c test.cpp ...

回答 1 投票 4

如何检查类是否继承了另一个类? [重复]

假设我正在编写以下模板化函数:class A {/ * ... * /}; // ...等...模板 void foo(){bool C_inherits_A = / * magic * /; if(C_inherits_A){...

回答 1 投票 0

找出C ++对象是否可调用

是否可以写一个类型特征,比如is_callable 它告诉对象是否定义了operator()?如果调用运算符的参数是事先知道的,那么很容易,但不是......

回答 8 投票 30

为什么std :: is_aggregate 聚合?

我总是认为像std :: is_same,std :: is_void或std :: is_aggregate这样的类型应该从std :: integral_constant继承,或者更具体地来自std :: bool_constant。 ...

回答 2 投票 11

为什么没有std :: is_struct类型特征?

我已经看到,为了检查类型T是否是我可以使用的类:bool isClass = std :: is_class ::值;它对类和结构都返回true。我知道在C ++中它们几乎就是......

回答 5 投票 54

如何判断Type是否为Functor? [重复]

在c ++ 17中,我有is_invocable来匹配函数指针,lambdas和functor。但是,如果我被困在c ++ 14上怎么办?我是否有类型特征,或者我可以写一个,这将匹配所有这些?我有 ...

回答 1 投票 0

检测类型何时不需要调用其析构函数

我正在编写一个C ++ 11 STL兼容的分配器,我想知道如何检测安全的类型,不要调用它们的析构函数(在分配器中) ::破坏方法。)我已经......

回答 3 投票 4

在矢量上使用is_copy_constructible时出现误报

类型特征是否应该能够处理诸如std :: vector <std :: unique_ptr之类的情况 >并检测到它不是可复制构造的?以下是https://ideone.com/gbcRUa上的一个示例(...

回答 2 投票 13

为什么traits :: access无法编译(c ++)?

我现在正在学习如何使用boost :: geometry库,我正在学习这个教程,其中引入了类型特征以使代码更通用。例如,下面的距离函数是......

回答 1 投票 0

检查是否在可变参数模板参数包中传递了类型

我听说过某个地方,使用新的C ++ 1z语法,很容易检查是否在可变参数模板参数包中传递了一个类型 - 显然你可以使用接近一行长的代码来做到这一点。 ...

回答 2 投票 7

为什么`std :: is_function_v`无法按预期工作?

#包括 #包括 #包括 using namespace std;模板 bool f(T && v){return is_function_v

回答 1 投票 4

输入trait以检查类型是否可从流和MSVC中读取

最近我遇到了讨论is_streamable类型特征的问题。所以我决定实现我自己的版本并提出下一个解决方案来检查是否可以从std ::中读取类型...

回答 1 投票 4

获取类中的字段数

有没有办法获得一个类的字段数? struct Base {char a; int b; }; struct Derived:Base {std :: string c; }; static_assert(NUM_FIELDS :: value == 2); ...

回答 2 投票 5

许多嵌套std :: conditional_t的替代品?

我发现很多嵌套的std :: conditional_t很难读,所以我选择了一个不同的模式(在自动返回类型的函数上调用decltype):template 汽车...

回答 2 投票 2

SFINAE未能使用中间类型特征

请考虑以下测试代码://预处理器#include #包括 //没有类型别名模板的结构 struct invalid {}; // 结构体 ...

回答 3 投票 1

在标准库中键入trait以获得聚合初始化?

C ++标准库具有std :: is_constructible 检查是否可以从给定类型构造一个类作为参数。例如,如果我有一个MyClass类,它有...

回答 1 投票 6

是否有类型特征立即删除顶级cv和引用?

我只是想知道标准是否已经提供了一个。我知道很容易自己制作一个//用于C ++ 03,使用 和std :: tr1 #include ...

回答 2 投票 14

如何使用type_traits检测字符串文字?

我如何可靠地对任何不是字符串文字的东西进行static_assert?例如,在下面的代码中,我试图包装标准断言宏,但静态拒绝任何东西...

回答 2 投票 7

© www.soinside.com 2019 - 2024. All rights reserved.