c++ - 声明在嵌套范围内初始化的未初始化变量

标签 c++ c++11

我有以下 C++ 片段

double exetime = 0;  
SVDRec R;
{
  timer<double> dummy{exetime};
  R = svdLAS2();
}
std::cout << exetime << std::endl;

timer 的构造函数记录进入作用域 block 的时间,其析构函数(离开 block 时调用)计算耗时并将其存储在 exetimeR 仅在代码块内初始化,没有默认构造函数,因此代码无法通过编译。但我不想将 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/

相关文章:

c++ - 同一对象的多个拷贝 (C++) : thread safe?

c++ - clang 和 gcc 在使用智能指针时不会警告多态性的非虚基析构函数?

c++ - SFINAE 将实例化类型限制为 std::chrono::duration 类型

gcc - 我如何使用十六进制浮点

c++ - 为什么整数到字符串的转换直到现在才明确包含在 C++ 中?

C++ 模板特化 : compile error: "is not a type"

c++ - openGL是如何通过永恒循环来控制帧率的?

c++ - 表达式 `&(*some_vector.end())` 是否定义明确?

C++ 指针运行时错误 - 使用指针设置变量然后检索

c++ - 从文件中读取固定点的固定 double 并转换为长