相关疑难解决方法(0)

模板化运算符重载的奇怪错误

当我编译以下代码片段时,我得到了一个带有clang的编译器错误,但是没有使用g ++/MSVC:

#include <string>

template<typename T> struct Const { 
    explicit Const(T val) : value(val) {}
    T value;
};

template<typename T> struct Var {
    explicit Var(const std::string &n) : name(n) {}

    std::string name;
};

template<typename L, typename R> struct Greater {
    Greater(L lhs, R rhs) : left(lhs), right(rhs) {}

    L left;
    R right;
};

template<typename L>
Greater<L, Const<int> > operator > (L lhs, int rhs) { 
    return Greater<L, Const<int> >(lhs, Const<int>(rhs));
}

template<typename R>
Greater<Const<int>, R> operator > (int lhs, R …
Run Code Online (Sandbox Code Playgroud)

c++ templates operator-overloading clang sfinae

10
推荐指数
1
解决办法
1175
查看次数

标签 统计

c++ ×1

clang ×1

operator-overloading ×1

sfinae ×1

templates ×1