繁体   English   中英

使用 MSVC 在模板化 function 中调用用户定义的转换运算符的正确方法

[英]Correct way to call user defined conversion operator in templated function with MSVC

我需要在 class 中调用模板化转换运算符,如下所示:


struct S {
    template<typename T>
    operator T() const {
        return T{};
    }

    template<typename T>
    T test()
    {
        return operator T();
    }
};

int main(){
    S s;
    s.test<int>();

    return 0;
}

这段代码用 clang 但不是用 MSVC(19) 编译,给我一个 c2352 错误。 是正确的语法吗?

演示

语法是正确的,因为使用this->operator T()可能会明确解决您的问题:

template<typename T>
T test()
{
    return this->operator T();
}

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM