![](/img/trans.png)
[英]Is it possible to call templated user-defined conversion operator with explicit template arguments?
[英]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.