成员变量元组的初始化

Initialization of a member variable tuple

我有以下代码:

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 关键字时一样 - 但有效。

您可以将 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

这样你只需要重复两次辅助函数的名称。根据您的真实代码中表达式的 size/complexity,这可能是一个胜利。