我正在尝试根据类模板参数确定调用哪个版本的成员函数。我试过这个:
#include <iostream>
#include <type_traits>
template<typename T>
struct Point
{
void MyFunction(typename std::enable_if<std::is_same<T, int>::value, T >::type* = 0)
{
std::cout << "T is int." << std::endl;
}
void MyFunction(typename std::enable_if<!std::is_same<T, int>::value, float >::type* = 0)
{
std::cout << "T is not int." << std::endl;
}
};
int main()
{
Point<int> intPoint;
intPoint.MyFunction();
Point<float> floatPoint;
floatPoint.MyFunction();
}
我认为这是说“如果 T 是 int,则使用第一个 MyFunction,如果 T 不是 int,则使用第二个 MyFunction,但是我收到编译器错误,说“错误:'struct std::enable_if' 中没有名为'type'的类型” . 谁能指出我在这里做错了什么?