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

C++模板和基本数据类型,c++,C++,有没有办法判断模板参数是int或unsigned int之类的特定基本数据类型?std::is_base_of不这样做,试过了。我想写集合,可以框所有的基本数据类型,但我找不到一种方法来告诉它是哪种类型 如果您想知道它是否属于特定类型,可以使用: 如果您想知道它是否属于特定类型,可以使用: 您可以使用以下代码: #include <typeinfo> #include <iostream> class someClass { }; int main(int argc,

有没有办法判断模板参数是int或unsigned int之类的特定基本数据类型?std::is_base_of不这样做,试过了。我想写集合,可以框所有的基本数据类型,但我找不到一种方法来告诉它是哪种类型

如果您想知道它是否属于特定类型,可以使用:


如果您想知道它是否属于特定类型,可以使用:

您可以使用以下代码:

#include <typeinfo>
#include <iostream>

class someClass { };

int main(int argc, char* argv[]) {
    int a;
    someClass b;
    std::cout<<"a is of type: "<<typeid(a).name()<<std::endl; // Output 'a is of type int'
    std::cout<<"b is of type: "<<typeid(b).name()<<std::endl; // Output 'b is of type someClass'
    return 0;
}
您可以使用以下代码:

#include <typeinfo>
#include <iostream>

class someClass { };

int main(int argc, char* argv[]) {
    int a;
    someClass b;
    std::cout<<"a is of type: "<<typeid(a).name()<<std::endl; // Output 'a is of type int'
    std::cout<<"b is of type: "<<typeid(b).name()<<std::endl; // Output 'b is of type someClass'
    return 0;
}
一些有用的建议:

如果你需要一些更狭隘的定义,你可以将一个或多个特征组合在一起,例如

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;
};
一些有用的建议:

如果你需要一些更狭隘的定义,你可以将一个或多个特征组合在一起,例如

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;
};

用途是一样的。如果您没有实现std或boost,请使用以下方法:

template < typename T1, typename T2 >
struct is_same { enum { value = false }; };

template < typename T >
struct is_same <T,T> { enum { value = true }; };

用途是一样的。如果您没有实现std或boost,请使用以下方法:

template < typename T1, typename T2 >
struct is_same { enum { value = false }; };

template < typename T >
struct is_same <T,T> { enum { value = true }; };

你可能想知道:这是个糟糕的问题吗?为什么要向下投票?基本数据类型在C++中不需要装箱不,您不需要它,但可以使用它您可能想要的是整数:这是一个坏问题吗?为什么要向下投票?基本数据类型在C++中不需要装箱不,您不需要装箱,但可以使用。他指的是模板参数。如果他知道类型,他就不会问这个问题。他可以使用:typeidtemplateVariable.name;如果templateVariable是一个模板参数,则不是。他指的是一个模板参数。如果他知道类型,他就不会问这个问题。他可以使用:typeidtemplateVariable.name;如果templateVariable是模板参数,则不适用。感谢您的实现!你们有这个代码吗?只要有足够的时间和练习,你们就会对它了如指掌。谢谢你们的实现!你们有这个代码吗?只要有足够的时间和练习,你们就会对它了如指掌。