我有以下 C++ 片段
double exetime = 0;
SVDRec R;
{
timer<double> dummy{exetime};
R = svdLAS2();
}
std::cout << exetime << std::endl;
timer
的构造函数记录进入作用域 block 的时间,其析构函数(离开 block 时调用)计算耗时并将其存储在 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/