初始化成员变量元组

时间:2015-06-20 18:58:02

标签: c++ c++14 decltype

我有以下代码:

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关键字一样 - 但正在工作。

1 个答案:

答案 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

这样你只需重复两次辅助函数的名称。根据实际代码中表达式的大小/复杂程度,这可能是一个胜利。