成员变量元组的初始化

Initialization of a member variable tuple

本文关键字:初始化 元组 变量 成员      更新时间:2023-10-16

我有以下代码:

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()
    {
    }
};

实时示例

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