出于好奇,是否有可能获得当前类的类型而不在静态上下文中拼写出其名称?
这个想法是这样的:
class Foo{
auto clone () -> decltype(*this);
}
但这只适用于非静态上下文。像这样的成员声明是不可能的:
class Foo{
static auto make() -> decltype(*this); //"this" is not valid in a static function
decltype(*this) secondFoo;
static decltype(*this) instance;
}
那么,有什么我可以用decltype(*this)
替换它会使上述声明有效吗?
解决方法当然是typedef Foo OwnType;
,然后使用OwnType
,我只是好奇,如果还有不同的方法。
我想为PMP函数执行此操作,该函数定义了与调用函数的类相同类型的静态成员变量的加载。