2015-06-20 37 views
2

的我有以下代碼:初始化一個成員變量元組

struct A 
{ 
    const string name; 

    A(string name) :name(name) {} 
}; 

struct Parent 
{ 
public: 
    const decltype(make_tuple(A("AA"))) children{ make_tuple(A("AA")) }; 

    Parent() 
    { 

    } 

}; 

是否有可能避免輸入A(「AA」)的兩倍?

就像當你使用auto關鍵字 - 但工作。

+0

NSDMIs不允許佔位符類型。 – Columbo

+0

我想避免複製粘貼類型。我只想告訴編譯器一次是什麼類型的孩子。 –

回答

0

您可以移動A("AA")甚至更​​好make_tuple(A("AA"))到它自己的功能:

namespace { 
    auto make_children() { return make_tuple(A("AA")); } 
} 

struct Parent 
{  
public: 
    const decltype(make_children()) children{ make_children() }; 

    Parent() 
    { 

    } 

}; 

Live example

這樣,你只需要重複輔助函數的名稱兩次。根據實際代碼中表達式的大小/複雜程度,這可能是一場勝利。