Possible Duplicate:
「What happened to my SFINAE」 redux: conditional template class members?的std :: enable_if串/ char類型
爲什麼我不能傳給其他的參數在我的模板類?我試圖啓用一個特定的參數只有當傳遞的類型是一個文字類型。如果不是,請接受其他類型,但不要啓用區分大小寫參數。
爲什麼下面不能編譯?
#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);
}
你會得到什麼錯誤?請將其粘貼(準確地)並指出它所指的是哪一行。 –