@@ -76,14 +76,9 @@ class any {
7676 template <typename T>
7777 using shared = std::shared_ptr<T>;
7878
79− template <typename T>
80− static constexpr auto make_shared(const T& arg) -> shared<T> {
81− return std::make_shared<T>(arg);
82− }
83−
84− template <typename T>
85− static constexpr auto make_shared(T&& arg) noexcept -> shared<T> {
86− return std::make_shared<T>(std::move(arg));
79+ template <typename T, typename... Args>
80+ inline static auto make_shared(Args&&... args) -> decltype(std::make_shared<T>(std::forward<Args>(args)...)) {
81+ return std::make_shared<T>(std::forward<Args>(args)...);
8782 }
8883
8984 private:
@@ -148,7 +143,7 @@ class any {
148143 any(any&&) noexcept;
149144
150145 auto operator=(const any&) -> any&;
151− auto operator=(any&) -> any&;
146+ auto operator=(any&) noexcept -> any&;
152147 auto operator=(any&&) noexcept -> any&;
153148
154149 any() = delete;