我想知道根据C ++标准,以下内容是合法的:
var areaPath = this.focus.append("path")
...
.attr('clip-path', 'url(#clip)') //defining it inline
GCC 6.3接受了它,但Clang 3.9拒绝了它。
但是,如果我改为:
struct Abstract { virtual ~Abstract() = 0; };
auto get_type() -> Abstract;
// I use `get_type` only to extract the return type.
using MyType = decltype(get_type());
现在两个编译器都接受它。在这种情况下他们都错了吗?
答案 0 :(得分:10)
在[class.abstract]中,非常简单:
不得使用抽象类作为参数类型,作为函数返回类型,或作为显式转换的类型。
任何试图做这种事情的代码都是格式错误的。