@@ -146,23 +146,23 @@ class any {
146146
147147 public:
148148
149− any(const long val) : type(Type::Integer), i(val) {}
150− any(const int val) : type(Type::Integer), i(val) {}
151− any(const unsigned int val) : type(Type::Integer), i(val) {}
152− any(const double val) : type(Type::Double), d(val) {}
153− any(const char val) : type(Type::Character), c(val) {}
149+ any(const long val) noexcept : type(Type::Integer), i(val) {}
150+ any(const int val) noexcept : type(Type::Integer), i(val) {}
151+ any(const unsigned int val) noexcept : type(Type::Integer), i(val) {}
152+ any(const double val) noexcept : type(Type::Double), d(val) {}
153+ any(const char val) noexcept : type(Type::Character), c(val) {}
154154
155155 template <typename T, typename = typename std::enable_if<std::is_same<bool,T>::value>::type>
156− any(const T val) : type(Type::Boolean), b(val) {}
156+ any(const T val) noexcept : type(Type::Boolean), b(val) {}
157157
158158 template <size_t N>
159− any(const char (&val)[N]) : type(Type::StringLiteral), r(val) {}
159+ any(const char (&val)[N]) noexcept : type(Type::StringLiteral), r(val) {}
160160 any(char * val) : type(Type::String), s(make_shared<std::string>(val)) {}
161161
162162 any(const std::string& val) : type(Type::String), s(make_shared<std::string>(val)) {}
163− any(std::string&& val) : type(Type::String), s(make_shared<std::string>(std::move(val))) {}
163+ any(std::string&& val) noexcept : type(Type::String), s(make_shared<std::string>(std::move(val))) {}
164164
165− any(const shared<std::string>& val) : type(Type::String), s(val) {}
165+ any(const shared<std::string>& val) noexcept : type(Type::String), s(val) {}
166166 any(shared<std::string>&& val) noexcept : type(Type::String), s(std::move(val)) {}
167167
168168 any(const map& val) : type(Type::Map), m(make_shared<map>(val)) {}
@@ -175,7 +175,7 @@ class any {
175175 any(array&& val) noexcept : type(Type::Array), a(make_shared<array>(std::move(val))) {}
176176
177177 template <typename T>
178− any(const T& val, typename std::enable_if<std::is_convertible<T,fn>::value>::type* = 0)
178+ any(const T& val, typename std::enable_if<std::is_convertible<T,fn>::value>::type* = 0) noexcept
179179 : type(Type::Function), f(val) {}
180180
181181 template <typename T, typename = typename std::enable_if<!std::is_same<any,T>::value &&
@@ -188,22 +188,22 @@ class any {
188188 : type(Type::EffFunction), e(make_shared<_eff_fn<T>>(val)) {}
189189
190190 template <typename T>
191− any(const T& val, typename std::enable_if<std::is_convertible<T,thunk>::value>::type* = 0)
191+ any(const T& val, typename std::enable_if<std::is_convertible<T,thunk>::value>::type* = 0) noexcept
192192 : type(Type::Thunk), t(val) {}
193193
194194 template <typename T>
195− any(const T& val, typename std::enable_if<std::is_assignable<shared<void>,T>::value>::type* = 0)
195+ any(const T& val, typename std::enable_if<std::is_assignable<shared<void>,T>::value>::type* = 0) noexcept
196196 : type(Type::Pointer), p(val) {}
197197
198198 template <typename T>
199199 any(T&& val, typename std::enable_if<std::is_assignable<shared<void>,T>::value>::type* = 0) noexcept
200200 : type(Type::Pointer), p(std::move(val)) {}
201201
202− any(std::nullptr_t) : type(Type::Pointer), p(nullptr) {}
202+ any(std::nullptr_t) noexcept : type(Type::Pointer), p(nullptr) {}
203203
204204 private:
205205
206− auto copy(const any& other) const -> void {
206+ auto copy(const any& other) const noexcept -> void {
207207 if (type & Type::Shared) {
208208 new (&p) shared<void>(other.p);
209209 } else {
@@ -211,7 +211,7 @@ class any {
211211 }
212212 }
213213
214− auto move(any& other) const noexcept -> void {
214+ auto move(any&& other) const noexcept -> void {
215215 if (type & Type::Shared) {
216216 new (&p) shared<void>(std::move(other.p));
217217 } else {
@@ -219,7 +219,7 @@ class any {
219219 }
220220 }
221221
222− auto destruct() noexcept -> void {
222+ auto destruct() -> void {
223223 if (type & Type::Shared) {
224224 p.~shared<void>();
225225 }
@@ -227,15 +227,15 @@ class any {
227227
228228 public:
229229
230− any(const any& other) : type(other.type) {
230+ any(const any& other) noexcept : type(other.type) {
231231 copy(other);
232232 }
233233
234234 any(any&& other) noexcept : type(other.type) {
235− move(other);
235+ move(std::move(other));
236236 }
237237
238− auto operator=(const any& rhs) -> any& {
238+ auto operator=(const any& rhs) noexcept -> any& {
239239 destruct();
240240 type = rhs.type;
241241 copy(rhs);
@@ -245,7 +245,7 @@ class any {
245245 auto operator=(any&& rhs) noexcept -> any& {
246246 destruct();
247247 type = rhs.type;
248− move(rhs);
248+ move(std::move(rhs));
249249 return *this;
250250 }
251251