@@ -76,14 +76,9 @@ class any {
76 template <typename T>
76 template <typename T>
77 using shared = std::shared_ptr<T>;
77 using shared = std::shared_ptr<T>;
79− template <typename T>
79+ template <typename T, typename... Args>
80− static constexpr auto make_shared(const T& arg) -> shared<T> {
80+ inline static auto make_shared(Args&&... args) -> decltype(std::make_shared<T>(std::forward<Args>(args)...)) {
81− return std::make_shared<T>(arg);
84− template <typename T>
85− static constexpr auto make_shared(T&& arg) noexcept -> shared<T> {
86− return std::make_shared<T>(std::move(arg));
81+ return std::make_shared<T>(std::forward<Args>(args)...);
@@ -148,7 +143,7 @@ class any {
148 any(any&&) noexcept;
143 any(any&&) noexcept;
150 auto operator=(const any&) -> any&;
145 auto operator=(const any&) -> any&;
151− auto operator=(any&) -> any&;
146+ auto operator=(any&) noexcept -> any&;
152 auto operator=(any&&) noexcept -> any&;
147 auto operator=(any&&) noexcept -> any&;
154 any() = delete;
149 any() = delete;