给定以下类和专门化。如何实现模板类的函数体和类定义之外的两种专门化?显然,每个函数实现都需要声明为inline
。
template <typename T1, typename = void>
struct MyClass
{
void func();
};
template <typename T1>
struct MyClass<T1, std::enable_if_t<std::is_integral<T1>::value>>
{
void func();
};
template <typename T1>
struct MyClass<T1, std::enable_if_t<std::is_floating_point<T1>::value>>
{
void func();
};
发布于 2018-04-19 13:11:12
要对模板类的成员函数进行类外定义,可以重复模板参数,以便形成类的名称。
基本上,要定义这个func()
模板 struct MyClass { void ();};
你会写:
template <typename T1, typename T2>
void MyClass<T1, T2>::func() {}
要定义这一个:
模板结构MyClass> { void ();};
你会写:
template <typename T1>
void MyClass<T1, std::enable_if_t<std::is_integral<T1>::value>>::func() {}
https://stackoverflow.com/questions/49930163
复制相似问题