小编Ste*_*hot的帖子

在类定义之外使用enable_if的函数实现

所以基本上,我现在有一个非常基本的泛型类,目前正在测试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();
}; 
Run Code Online (Sandbox Code Playgroud)

该函数完美地工作,仅适用于算术类型.

但我喜欢保持我的课程整洁,只让他们有原型,而功能实现在课堂之外.

使用标准模板即

void test();

template <typename T> void Test<T>::test() {}
Run Code Online (Sandbox Code Playgroud)

它很简单,我知道如何,但我不知道如何用" std::enable_if" 声明类外的实现,并且我在编译过程中的每一次尝试都说原型与类中的任何一个都不匹配.

我设法在这里找到了一个类似的问题,但那里的课程是标准的而不是通用的.

PS.我使用MinGW-w64和-std = c ++ 17

c++ templates sfinae type-traits c++17

6
推荐指数
2
解决办法
1322
查看次数

标签 统计

c++ ×1

c++17 ×1

sfinae ×1

templates ×1

type-traits ×1