我有以下C ++代码段
double exetime = 0;
SVDRec R;
{
timer<double> dummy{exetime};
R = svdLAS2();
}
std::cout << exetime << std::endl;
timer
的构造函数记录进入作用域块的时间,其析构函数(离开该块时调用)计算经过的时间并将其存储在exetime
中。 R
仅在块内部初始化,并且没有默认构造函数,因此由于这个原因,代码无法编译。但是我不想将R
初始化为一些虚拟值。这也不会编译:
double exetime = 0;
SVDRec &&tmpR;
{
timer<double> dummy{exetime};
tmpR = svdLAS2();
}
SVDRec R = tmpR;
std::cout << exetime << std::endl;
我知道我可以使用指针,但是我不想使用动态分配或std :: unique_ptr。反正有实现这个目标的方法吗?
最佳答案
你可以试试:
double exetime = 0;
SVDRec R = [&exetime]()
{
timer<double> dummy{exetime};
return svdLAS2();
}();
std::cout << exetime << std::endl;
关于c++ - 声明在嵌套范围内初始化的未初始化变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14583980/