【发布时间】:2016-09-15 14:30:24
【问题描述】:
考虑以下代码:
struct S {
using T = int;
operator T() { return 42; }
};
int main() {
S s;
S::T t = s;
// Is the following line correct?
t = s.operator T();
}
使用 GCC (4.9/5.1/6.1) 编译,但使用 clang (3.8/3.7) 编译失败。
返回的错误是:
错误:未知类型名称'T';你是说'S::T'吗?
在这种情况下哪个编译器是正确的,为什么?
注意
解决它是一个合格的问题T:
t = s.operator S::T();
问题不在于如何让它发挥作用。
【问题讨论】:
标签: c++ c++11 gcc clang language-lawyer