【发布时间】:2018-01-27 20:56:09
【问题描述】:
所以基本上,我现在有一个非常基本的泛型类,目前正在测试 type_traits 标头。我目前正在尝试制作一个函数来处理某些类型,即现在的算术类型。
#include <type_traits>
template <typename T> class Test {
public:
template <typename U = T>
typename std::enable_if<std::is_arithmetic<U>::value>::type print();
};
该函数完美运行,仅适用于算术类型。
但我喜欢让我的类保持整洁,只让它们有原型,而函数实现在类之外。
使用标准模板,即
void test();
template <typename T> void Test<T>::test() {}
这很简单,我知道怎么做,但是我不知道如何使用“std::enable_if”在类之外声明实现,并且我在编译期间所做的每一次尝试都表明原型不匹配任何在课堂里。
我在这里找到了类似的question,但是那里的课程是标准的而不是通用的。
PS。我正在使用 MinGW-w64 和 -std=c++17
【问题讨论】:
标签: c++ templates sfinae typetraits c++17