相关疑难解决方法(0)

使用不同的enable_if条件选择成员函数

我试图根据类模板参数确定调用哪个版本的成员函数.我试过这个:

#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();
}
Run Code Online (Sandbox Code Playgroud)

我认为这是说"如果T是int,则使用第一个MyFunction,如果T不是int,则使用第二个MyFunction,但我得到编译器错误"错误:'struct std :: enable_if'中没有类型名为'type'谁能指出我在这里做错了什么?

c++ templates specialization sfinae c++11

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

c++11 ×1

sfinae ×1

specialization ×1

templates ×1