考虑一些抽象类A
:函数签名返回抽象类
class A
{
virtual void f() = 0;
};
假设我要声明函数签名类型返回这个类:错误
using Type = A();
鉴于此代码,gcc-4.8.2
failes
error: ‘type name’ declared as function returning an abstract class type
clang-3.3
c这很好地诠释了这一点。
我试图谷歌这个问题,但没有找到任何有用的东西。此代码是否符合标准?如果不是,禁止声明这种签名类型的原因是什么?我在宣言中没有看到任何问题。
免责声明:我不去创建该类型的实例,我在声明中描述的签名只是感兴趣。
对于那些对这种声明的有用性感兴趣的人:我有一些工厂容器,在添加新工厂以学习新工厂时使用签名,如Interface(Arguments...)
;实际返回的类型是基于单独的特征类别确定的,参数为Interface
。
很显然,我可以分开签名Interface
,但它不会看是不错:(
'我在宣言中看不到任何问题。'好的。但你能看到这种声明的用途吗? – user2079303
@ user2079303包含了我的用例。 – lisyarus