【发布时间】:2013-11-25 21:24:44
【问题描述】:
当我声明一个类静态方法时,是否可以使用decltype(或任何其他类似样式)引用当前类?例如,
class
AAA
{
static AAA const make();
};
我正在尝试制作这样的东西。
class
AAA
{
static decltype(*this) const make(); // Not working because there's no `this`.
};
*this 用于描述我想做什么。我想知道一些decltype() 可以解析为AAA 的表达式。
如果可能的话,我该怎么做?
【问题讨论】:
-
我不知道你为什么要把
static AAA const make()的简洁明了的形式换成间接的static decltype(*this) const make()。可读性是王道,明确你的类型对你的读者有很大帮助。 -
这背后的想法是以特定的“智能”方式将
make函数添加到整个类层次结构中吗?这就是奇怪重复出现的模板参数模式的情况。如果这仅适用于一个类,我不明白需要派生返回类型,AAA会很好(但是,我也不明白调用构造函数有什么问题)。 -
我没有特定的用例实例。我突然对这个很好奇,如果可以的话,我想也许我以后可以想出一些有趣的应用程序。在这个问题中,我不主张任何想法的坏处。我也觉得这没什么用,但是这个问题困扰了我很长时间,所以我决定问这个。
标签: c++ c++11 static-methods decltype