首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++模板和基本数据类型

C++模板和基本数据类型
EN

Stack Overflow用户
提问于 2013-01-17 08:13:11
回答 4查看 168关注 0票数 1

有没有办法判断一个模板参数是一个特定的基本数据类型,比如int还是unsigned int?std::is_base_of不会这么做,我试过了。我想写一些可以封装所有基本数据类型的集合,但我找不到一种方法来辨别它是哪种类型……

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-17 08:25:07

使用is_same。如果您没有实现(std或boost),则使用以下代码:

代码语言:javascript
复制
template < typename T1, typename T2 >
struct is_same { enum { value = false }; };

template < typename T >
struct is_same <T,T> { enum { value = true }; };
票数 3
EN

Stack Overflow用户

发布于 2013-01-17 08:17:09

以下是一些有用的建议:

std::is_integral

std::is_floating_point

std::is_arithmetic

如果你需要更狭义的定义,你可以或几个std::is_same特征在一起,例如

代码语言:javascript
复制
template<typename T>
struct is_int_or_char_or_float {
    static const bool value =
        std::is_same<T, int>::value ||
        std::is_same<T, char>::value ||
        std::is_same<T, float>::value;
};
票数 2
EN

Stack Overflow用户

发布于 2013-01-17 08:15:07

如果想知道它是否是特定类型,可以使用std::is_same

代码语言:javascript
复制
#include <type_traits>

bool isInt = std::is_same<int, T>::value;

如果您想知道它是否是任何整数类型,则std::is_integral

代码语言:javascript
复制
bool isInt = std::is_integral<T>::value;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14370207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档