现代C++会支持 C# "Object Initalizer"语法吗?

Will modern C++ ever support C# "Object Initalizer" Syntax?

本文关键字:Initalizer 语法 Object 现代 支持 C++      更新时间:2023-10-16

我很好奇现代c++标准的人是否考虑或添加了c#的"Object Initializer"语法。例如,在C#中,我可以在初始化期间初始化像这样的对象的成员:

StudentName student2 = new StudentName
{
FirstName = "Craig",
LastName  = "Playstead"
};
public class StudentName {
public string FirstName;
public string LastName;
};

如果标准人员计划将"对象初始化器"语法添加到现代C++中,即C++11、C++14、C++17、C++20等,这将非常方便

它目前存在于现代C++规范中吗?

查看指定的初始化程序。自C99以来,它们一直存在于C中,但没有添加到C++中。现在计划在C++20中添加它们,但有一些限制。示例:

struct db_config
{
std::string host = "localhost";
std::string port = "5432";
std::string dbname;
std::string user;
std::string password;
} config = {
.dbname = "test",
.user = "admin",
.password = "v3ry$3cur3"
};

然而,一些编译器(例如GCC(已经允许在C++代码中使用C指定的初始值设定项作为扩展。