GCC vs clang:无效使用不完整类型,谁是对的?

时间:2018-04-06 21:12:42

标签: c++ templates gcc clang language-lawyer

请考虑以下代码段:

struct foo_t;

template<typename T>
void foo() {
    T{}.foo(foo_t{});
}

struct foo_t {};

struct S {
    void foo(foo_t) {}
};

int main() {
    foo<S>();
}

GCC愉快compiles it,同时铿锵rejects the snippet并出现以下错误:

  

错误:无效使用不完整类型&#39; foo_t&#39;

哪种编译器是正确的,为什么?

0 个答案:

没有答案