使用 lambda 初始化静态数组



>我有一个模板,其中我有一个静态数组。我正在尝试使用 lambda 初始化数组 - 但我认为它没有初始化:

template <class base>
A<base> A<base>::arr[SIZE] = [] () 
{
for (int i = 0 ; i < SIZE; i++)
{
A<base>::arr[i]=A<base>();
std::cout<<"Test"<<std::endl;
}
};

运行可执行文件时,我无法在控制台中看到我的 cout 消息。

如何使用 lambda 功能初始化数组?

你从来没有叫过lambda。

lambda 不返回任何内容,因此使用其返回值进行初始化无论如何都不起作用。

无法返回数组。

除了默认初始化之外,数组只能使用大括号括起来的值列表(或字符串文字(进行初始化,这不是可以从函数(包括 lambda(返回的内容。

您的循环似乎值初始化所有元素。未在大括号初始化列表中列出的元素是值初始化的,因此您可以使用空大括号封闭列表实现循环所执行的操作:

template <class base>
A<base> A<base>::arr[SIZE] = {};

最新更新