此 Nana 演示代码中使用的 C++ 功能是什么?

What is the C++ feature being used in this Nana demo code?

their webpage上,娜娜GUI人举了这个例子:

#include<nana/gui.hpp>

int main()
{
     using namespace nana;
     form fm;
     drawing{fm}.draw([](paint::graphics& graph){
         graph.string({10, 10}, L"Hello, world!", colors::red);
     });
     fm.events().click(API::exit);
     fm.show();
     exec();
}

开始的行中使用的 C++ 功能是什么:drawing{fm}.draw...

我从未见过这样使用 {}。

它被称为统一初始化,是在C++11中添加的。参见例如Bjarne's page 获取更多信息。

在您的特定示例中,drawing 的未命名实例是使用 fm 作为 drawing 构造函数的实际参数构造的。然后在这个 drawing 实例上调用 draw 方法。这也可以使用普通括号编写:

drawing(fm).draw([](paint::graphics& graph){
     graph.string({10, 10}, L"Hello, world!", colors::red);
 });

有一些细微差别:即使用 {} 会支持采用 initializer_list 的构造函数(如果存在这样的构造函数);使用 {} 可避免 Most Vexing Parse; and using {} avoids implicit lossy narrowing of arguments. See this GotW 以获取更多详细信息。