當我聲明一個類靜態方法時,是否可以使用decltype
(或以任何其他類似的樣式)引用當前類?例如,如何在C++ 11中使用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 decltype(* this)const make()'交換清晰簡潔的'static AAA const make()'形式。可讀性是王道,明確你的類型對你的讀者有很大的幫助。 – cmaster
在這個背後的想法是以特定的「智能」方式將「make」函數添加到整個層次的類中?對於奇怪的循環模板參數模式來說,情況就是如此。如果這只是一個類,我不明白需要派生返回類型,'AAA'會很好(但是,我不明白調用構造函數是什麼問題)。 – Damon
我沒有特定的用例。我突然對此感到好奇,如果這是可能的,我想也許我可以稍後找出一些有趣的應用。在這個問題上,我不主張任何善意的壞主意。我也認爲這不會太有用,但這個問題困擾了我很長時間,所以我決定問這個問題。 – Eonil