请考虑以下代码:
template<typename T>
struct S { static constexpr int bar = T::foo; };
struct U: S<U> { static constexpr int foo = 42; };
int main() { }
Run Code Online (Sandbox Code Playgroud)
GCC v6.1编译它,clang 3.8拒绝它并带有错误:
2:错误:'U'
结构中没有名为'foo'的成员S {static constexpr int bar = T :: foo; };
哪个编译器是对的?
可能是因为我们尝试在其中使用它时U 不是一个完整的类型S吗?
在这种情况下,它应该被认为是GCC的一个错误,但我想知道我是否正好在bug跟踪器上搜索/打开一个问题...
编辑
与此同时,我向GCC 打开了一个错误.
等待它接受答案.