Gui*_*cot 8 c++ abstract-class language-lawyer c++11
我想知道根据C++标准,以下是合法的:
struct Abstract { virtual ~Abstract() = 0; };
auto get_type() -> Abstract;
// I use `get_type` only to extract the return type.
using MyType = decltype(get_type());
Run Code Online (Sandbox Code Playgroud)
GCC 6.3接受了它,但Clang 3.9拒绝了它.
但是,如果我这样做:
auto get_type() -> struct Abstract;
struct Abstract { virtual ~Abstract() = 0; };
using MyType = decltype(get_type());
Run Code Online (Sandbox Code Playgroud)
现在两个编译器都接受它.在这种情况下他们都错了吗?