git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: add noexcept to move constructors
47b98c2Andy Arvanitis
pcc/include/purescript.cc+2−2
@@ -56,7 +56,7 @@ any::any(const any& other) {
56 copy_data(other);
56 copy_data(other);
57}
57}
58
58
59−any::any(any&& other) {
59+any::any(any&& other) noexcept {
60 move_data(other);
60 move_data(other);
61}
61}
62
62
@@ -71,7 +71,7 @@ auto any::operator=(any& rhs) -> any& {
71 return *this;
71 return *this;
72}
72}
73
73
74−auto any::operator=(any&& rhs) -> any& {
74+auto any::operator=(any&& rhs) noexcept -> any& {
75 move_data(rhs);
75 move_data(rhs);
76 return *this;
76 return *this;
77}
77}
pcc/include/purescript.hh+7−7
@@ -82,7 +82,7 @@ class any {
82 }
82 }
83
83
84 template <typename T>
84 template <typename T>
85− static constexpr auto make_shared(T&& arg) -> shared<T> {
85+ static constexpr auto make_shared(T&& arg) noexcept -> shared<T> {
86 return std::make_shared<T>(std::move(arg));
86 return std::make_shared<T>(std::move(arg));
87 }
87 }
88
88
@@ -113,14 +113,14 @@ class any {
113 any(const T val) : type(Type::Boolean), b(val) {}
113 any(const T val) : type(Type::Boolean), b(val) {}
114
114
115 any(const string& val) : type(Type::String), s(make_shared<string>(val)) {}
115 any(const string& val) : type(Type::String), s(make_shared<string>(val)) {}
116− any(string&& val) : type(Type::String), s(make_shared<string>(std::move(val))) {}
116+ any(string&& val) noexcept : type(Type::String), s(make_shared<string>(std::move(val))) {}
117 any(const char val[]) : type(Type::String), s(make_shared<string>(val)) {}
117 any(const char val[]) : type(Type::String), s(make_shared<string>(val)) {}
118
118
119 any(const map& val) : type(Type::Map), m(make_shared<map>(val)) {}
119 any(const map& val) : type(Type::Map), m(make_shared<map>(val)) {}
120− any(map&& val) : type(Type::Map), m(make_shared<map>(std::move(val))) {}
120+ any(map&& val) noexcept : type(Type::Map), m(make_shared<map>(std::move(val))) {}
121
121
122 any(const vector& val) : type(Type::Vector), v(make_shared<vector>(val)) {}
122 any(const vector& val) : type(Type::Vector), v(make_shared<vector>(val)) {}
123− any(vector&& val) : type(Type::Vector), v(make_shared<vector>(std::move(val))) {}
123+ any(vector&& val) noexcept : type(Type::Vector), v(make_shared<vector>(std::move(val))) {}
124
124
125 template <typename T, typename = typename std::enable_if<!std::is_same<any,T>::value>::type>
125 template <typename T, typename = typename std::enable_if<!std::is_same<any,T>::value>::type>
126 any(const T& val, typename std::enable_if<std::is_assignable<fn,T>::value>::type* = 0)
126 any(const T& val, typename std::enable_if<std::is_assignable<fn,T>::value>::type* = 0)
@@ -139,17 +139,17 @@ class any {
139 : type(Type::Pointer), p(val) {}
139 : type(Type::Pointer), p(val) {}
140
140
141 template <typename T>
141 template <typename T>
142− any(T&& val, typename std::enable_if<std::is_assignable<shared<void>,T>::value>::type* = 0)
142+ any(T&& val, typename std::enable_if<std::is_assignable<shared<void>,T>::value>::type* = 0) noexcept
143 : type(Type::Pointer), p(std::move(val)) {}
143 : type(Type::Pointer), p(std::move(val)) {}
144
144
145 any(std::nullptr_t) : type(Type::Pointer), p(nullptr) {}
145 any(std::nullptr_t) : type(Type::Pointer), p(nullptr) {}
146
146
147 any(const any&);
147 any(const any&);
148− any(any&&);
148+ any(any&&) noexcept;
149
149
150 auto operator=(const any&) -> any&;
150 auto operator=(const any&) -> any&;
151 auto operator=(any&) -> any&;
151 auto operator=(any&) -> any&;
152− auto operator=(any&&) -> any&;
152+ auto operator=(any&&) noexcept -> any&;
153
153
154 any() = delete;
154 any() = delete;
155 ~any();
155 ~any();