|
|
@@ -3,10 +3,11 @@
|
|
|
#include <functional>
|
|
|
#include <type_traits>
|
|
|
|
|
|
-#define CONCAT2(A, B) A##B
|
|
|
-#define CONCAT(A, B) CONCAT2(A, B)
|
|
|
+#define JVALIDATE_CONCAT2(A, B) A##B
|
|
|
+#define JVALIDATE_CONCAT(A, B) JVALIDATE_CONCAT2(A, B)
|
|
|
+
|
|
|
#define scoped_state(prop, value) \
|
|
|
- auto CONCAT(scoped_state_, __LINE__) = detail::ScopedState(prop, value)
|
|
|
+ auto JVALIDATE_CONCAT(scoped_state_, __LINE__) = detail::ScopedState(prop, value)
|
|
|
|
|
|
namespace jvalidate::detail {
|
|
|
class ScopedState {
|
|
|
@@ -15,8 +16,8 @@ private:
|
|
|
|
|
|
public:
|
|
|
template <typename T, typename S>
|
|
|
- requires(std::is_constructible_v<T, S>) ScopedState(T & prop, S value)
|
|
|
- : reset_([reset = prop, &prop]() { prop = reset; }) {
|
|
|
+ requires(std::is_constructible_v<T, S>)
|
|
|
+ ScopedState(T & prop, S value) : reset_([reset = prop, &prop]() { prop = reset; }) {
|
|
|
prop = std::move(value);
|
|
|
}
|
|
|
|