我有以下 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。有没有办法做到这一点?