次の C++ スニペットがあります
double exetime = 0;
SVDRec R;
{
timer<double> dummy{exetime};
R = svdLAS2();
}
std::cout << exetime << std::endl;
ここで、records のコンストラクターは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 も使用したくありません。とにかくこれを達成する方法はありますか?