当前位置 : 主页 > 编程语言 > c++ >

c – 使用enable_if将数字作为函数参数进行匹配

来源:互联网 收集:自由互联 发布时间:2021-06-23
我想使用std :: enable_if来构造匹配数字的构造函数.我尝试了以下代码,但找不到构造函数.主要功能有我想要如何使用它的例子.我应该改变什么来使这项工作? #include type_traits#include stri
我想使用std :: enable_if来构造匹配数字的构造函数.我尝试了以下代码,但找不到构造函数.主要功能有我想要如何使用它的例子.我应该改变什么来使这项工作?

#include <type_traits>
#include <string>

class A {
public:
    A(const std::wstring&, const std::wstring&)
    {}

    template<typename T>
    A(const std::wstring& n, typename std::enable_if<std::is_arithmetic<T>::value, T>::type v)
    {}
};

int main() {
    A(L"n", 1234); // does not compile
    A(L"n", 2.7); // does not compile
    A(L"n", L"n"); // compiles
    return 0;
}

错误on Ideone:模板参数扣除/替换失败

你的T不可扣除(由于:: type),一种方法是:

template<typename T,
         typename std::enable_if<std::is_arithmetic<T>::value>::type* = nullptr>
A(const std::wstring& n, T v)
{}
网友评论