FTXUI 6.1.9
C++ functional terminal UI.
载入中...
搜索中...
未找到
autoreset.hpp
浏览该文件的文档.
1// 版权所有 2020 Arthur Sonzogni。保留所有权利。
2// 此源代码的使用受 MIT 许可协议的约束,该协议可在
3// LICENSE 文件中找到。
4#ifndef FTXUI_UTIL_AUTORESET_HPP
5#define FTXUI_UTIL_AUTORESET_HPP
6
7#include <utility>
8
9namespace ftxui {
10
11/// 为变量赋值,当超出作用域时恢复其旧值。
12template <typename T>
13class AutoReset {
14 public:
15 AutoReset(T* variable, T new_value)
16 : variable_(variable), previous_value_(std::move(*variable)) {
17 *variable_ = std::move(new_value);
18 }
19 AutoReset(const AutoReset&) = delete;
20 AutoReset(AutoReset&&) = delete;
21 AutoReset& operator=(const AutoReset&) = delete;
23 ~AutoReset() { *variable_ = std::move(previous_value_); }
24
25 private:
26 T* variable_;
27 T previous_value_;
28};
29
30} // namespace ftxui
31
32#endif /* end of include guard: FTXUI_UTIL_AUTORESET_HPP */
为变量赋值,当超出作用域时恢复其旧值。
AutoReset(const AutoReset &)=delete
AutoReset & operator=(AutoReset &&)=delete
AutoReset & operator=(const AutoReset &)=delete
AutoReset(AutoReset &&)=delete
AutoReset(T *variable, T new_value)
#include "ftxui/component/component_base.hpp" // 用于 ComponentBase