@@ -82,7 +82,7 @@ class any {
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));
@@ -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) {}
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)) {}
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))) {}
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))) {}
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) {}
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)) {}
145 any(std::nullptr_t) : type(Type::Pointer), p(nullptr) {}
145 any(std::nullptr_t) : type(Type::Pointer), p(nullptr) {}
147 any(const any&);
147 any(const any&);
148− any(any&&);
148+ any(any&&) noexcept;
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&;
154 any() = delete;
154 any() = delete;