gpt4 book ai didi

c++ - std::enable_if 字符串/字符类型

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:18 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
“What happened to my SFINAE” redux: conditional template class members?

为什么我不能将其他参数传递给我的模板类?仅当传递的类型是文字类型时,我才尝试启用特定参数。如果不是,则接受其他类型但不启用区分大小写的参数。

为什么下面的不编译?

#include <iostream>
#include <type_traits>

template<typename T>
struct is_literal
{
enum{value = false};
};

template<>
struct is_literal<char>
{
enum{value = true};
};

template<>
struct is_literal<char*>
{
enum{value = true};
};

template<>
struct is_literal<const char*>
{
enum{value = true};
};

template<typename Char, typename Traits, typename Alloc>
struct is_literal<std::basic_string<Char, Traits, Alloc>>
{
enum
{
value = true
};
};

template<typename T>
class Test
{
public:
bool Contains(T DataType, typename std::enable_if<is_literal<T>::value, bool>::type CaseSensitive = true);
};

template<typename T>
bool Test<T>::Contains(T DataType, typename std::enable_if<is_literal<T>::value, bool>::type CaseSensitive)
{
return true;
}


int main()
{
Test<int> F; //This line gives errors.. It gives none if I pass char, char*, const char*, std::string.
F.Contains(1);
}

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