typetraits 相关问题

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

std::vector<std::aligned_storage> 是病态的吗?

address sanitizer 变得疯狂: 有时放置 new ::new(&vec[some_index]) T(std::forw...

回答 1 投票 0

C++17 如何使用变量模板模仿Julia的'promote_type'函数?

由于一些个人原因,我正在开发Julia的SparseMatrixCSC的C++版本,这个版本在我移植到C++的项目中很特殊,Armadillo的SpMat未能成为一个完美的替代品......。

回答 1 投票 0

为什么 std::arrays 会破坏带有类型检查的模板函数?

我有一个模板函数,根据所提供的类型执行某些操作:模板 T read() { if (std::is_integral) ()) {返回 static_cast

回答 1 投票 -1

带有模板参数enable_if的C++朋友函数。

我正在为一个结构的友函数而苦恼,这个结构的模板参数为enable_if。/ foo.h #ifndef FOO_H #define FOO_H #include template< typename T, ...

回答 1 投票 0

我如何检查一个类型是否是std::bittset的特殊化?

我很难在编译时检查类型是否是std::bitset。我想用类似于:is_bitset的方法来实现。 &gt;::value; /应该计算为真。 ...

回答 1 投票 0

如何检查一个模板是否是另一个模板的类成员?

我做了一个函数,按成员对我的向量进行排序(比如按年龄或姓名对学生进行排序),所以我做了一个模板函数template 无效排序(向量 & ...

回答 1 投票 0

为什么C++20中没有枚举的概念?

我正试图用当前的GCC10更新一些旧的代码到即将到来的C++20语言中。我无法更新一些模板,因为它们使用了一个std::enable_if--------。 > ...

回答 1 投票 0

函数指针的类型特征?

我需要在模板类里面有条件的使用std::abs或者std::fabs,下面是简化版的相关代码:模板类。 class C { public: using type = std::...

回答 1 投票 0

为什么要检查Base是Derived的私有基还是保护基?

std::is_base_of的唯一区别在于,它是一个类的内部实现。 和 std::is_convertible 当Base是一个私有或受保护的基地时,前者也是真实的......。

回答 1 投票 1

别名模板不是类模板?

我正试图写一个类型特征来检测一个类型是否具有某个类型的T::type。我使用的是这个答案中的代码。作为参考,这是我正在使用的部分代码。/ 参见http:/www.open-...

回答 1 投票 0

别名模板不是类模板?

我正试图写一个类型特征来检测一个类型是否具有某个类型的T::type。我使用的是这个答案中的代码。作为参考,这是我正在使用的部分代码。/ 参见http:/www.open-...

回答 1 投票 0

如果 std::is_standard_layout_v<T> 为真,那么 std::is_trivial_v<T> 是否总是为真?

模板 void f() { 如果 constexpr (std::is_trivial_v) ) { / 下面这行是否从来没有失败过? static_assert(std::is_standard_layout_v)。 ); ...

回答 1 投票 0

c++类型特征:确保子类实现一个方法。

有一个虚拟类C,我想确保任何继承自C的具体子类都能实现一个函数 "get"(如果没有的话,会有一个明确的编译时错误)增加一个虚拟的"......"。

回答 1 投票 0

基于类型特征的更改功能定义? [重复]

我想通过使用enable_if_t根据类型更改函数定义。与此类似的东西:#include template struct A;模板

回答 1 投票 0

std :: decay和删除const限定词

我想更好地了解std :: decay的工作原理。根据cppreference,它应该从类型中删除const和volatile分类,作为它进行其他转换的一部分。 ...

回答 1 投票 1

可以限制类型特征以不接受其他类型特征作为参数吗?

问题可能很奇怪,所以这里是一个简短的激励示例:#include #include template // gcc 8.3的变通方法,其中volatile int不是...

回答 1 投票 0

要接收的T :: value_type的类型特征,否则为T

[必需是类型T的类型特征,如果T具有typedef value_type,则提供类型为T :: value_type的typedef类型,否则为T。我已经尝试了以下实现,但没有实现...

回答 1 投票 0

是否可以定义一个包含函数和lambda的可调用概念?

我想定义一个接受所有可调用对象的概念。到目前为止,这是我所做的:template 概念Func = std :: is_function_v

回答 1 投票 1

Boost多精度整数的类型特征

我想写一个类型特征来标识增强型多精度整数类型。我可以针对uint256_t这样的具体类型执行此操作:template struct is_multiprecision_int:std :: ...

回答 1 投票 1

为什么std :: arrays通过类型检查破坏模板化函数?

我有一个模板函数,该函数根据提供的类型执行某些操作:template T read(){如果(std :: is_integral ()){return static_cast > read是模板。每次实例化此模板时,编译器都会生成函数的整个主体。当您调用read<int>()时,也会编译带有array的段,但是无法将数组分配给返回类型int。这就是为什么您得到错误。 在g ++ 7.3下,您可以使用if constexpr构造。这样,仅编译if 条件为true的范围内的行: template<typename T> T read() { if constexpr (std::is_integral<T>()) { return static_cast<T>(std::stoi(readToken())); } else if constexpr (std::is_same<T, float>()) { return std::stof(readToken()); } else if constexpr (std::is_same<T, std::array<float, 3>>()) { std::array<float, 3> arr; arr.at(0) = 4; arr.at(1) = 2; arr.at(2) = 0; return arr; } else throw std::logic_error("Invalid type"); } 在c ++ 17之前,您调用helper函数,该函数对于您要处理的所有类型都是重载的: template<class T> T readHelper() { throw std::runtime_error("invalid type"); } // here provide types you want to be handled template<> int readHelper<int>() { return std::stoi(readToken()); } template<> float readHelper<float>() { return std::stof(readToken()); } template<> std::array<float,3> readHelper<std::array<float,3>>() { return std::array<float,3>{}; } template<class T> T read2(){ return readHelper<T>(); } Demo

回答 1 投票 0

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