我有一个模板,其中有一个静态数组。我正在尝试使用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功能初始化数组?
答案 0 :(得分:1)
你从未打电话给lambda。
lambda不会返回任何内容,因此无论如何使用其返回值进行初始化都无法正常工作。
无法返回数组。
除了默认初始化之外,数组只能使用括号括起的值列表(或字符串文字)进行初始化,而这些值不能从函数(包括lambdas)返回。
您的循环似乎值初始化所有元素。未在大括号初始化列表中列出的元素是值初始化的,因此您可以使用空括号括起来的列表来实现循环:
template <class base>
A<base> A<base>::arr[SIZE] = {};