我在 stl 元组的帮助下为一些变量实现了保存/恢复功能,如下所示:
double a = 1, b = 2;
int c = 3;
auto tupleRef = std::make_tuple(std::ref(a), std::ref(b), std::ref(c));
// here I'm saving current state of a, b, c
std::tuple<double, double, int> saved = tupleRef;
//here goes block of code, where a, b, and c get spoiled
......................
//
//now I'm restoring initial state of a, b, c
tupleRef = savedTuple;
这段代码运行良好。但不是显式指定元组成员类型
std::tuple<double, double, int> saved = tupleRef;
我宁愿从所有 tupleRef 成员中删除引用,如下所示
auto saved = remove_ref_from_tuple_members(tupleRef);
我相信可以为此编写“remove_ref_from_tuple_members”模板。
感谢您的回答。