gpt4 book ai didi

c++ - 检查模板参数是否属于类类型?

转载 作者:可可西里 更新时间:2023-11-01 18:27:40 32 4
gpt4 key购买 nike

如何使用一些模板 hack 检查传递的模板参数是否是类类型?

例子

int main()
{
CheckIfClass<int>::checkConst ; No it is not of a class type
class CLASS{};
CheckIfClass<CLASS>::checkConst ; Yes CLASS is a class.
CheckIfClass<std::string>::checkConst ; Yes std::string is a class
}

最佳答案

SFINAE应该做你的工作

#include <iostream>
template<typename T>
struct Check_If_T_Is_Class_Type
{
template<typename C> static char func (char C::*p);
template<typename C> static int func (...);
enum{val = sizeof (Check_If_T_Is_Class_Type<T>::template func<T>(0)) == 1};
};
class empty{}; // Defined the class in the global namespace.
// You can't have local classes as template arguments in C++03

int main()
{

std::cout<<Check_If_T_Is_Class_Type<empty>::val; // 1
std::cout<<Check_If_T_Is_Class_Type<int>::val; // 0
std::cout<<Check_If_T_Is_Class_Type<std::string>::val; //1
}

Output

101

关于c++ - 检查模板参数是否属于类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4352278/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com