git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: make any::make_shared the same as std::make_shared
commit0ce22bcbe1a8ce63ac86d571d51fe543a7ff86ed authorAndy Arvanitis <andyarvanitis@gmail.com> dateMon 11 Jan 2016, 19:57 (11 years ago) parent47b98c2
2 files changed+5−10
pcc/include/purescript.cc+1−1 pcc/include/purescript.hh+4−9
pcc/include/purescript.cc+1−1
@@ -66,7 +66,7 @@ auto any::operator=(const any& rhs) -> any& {
6666}
6767
6868// Takes ownership -- might need to reconsider this
69−auto any::operator=(any& rhs) -> any& {
69+auto any::operator=(any& rhs) noexcept -> any& {
7070 move_data(rhs);
7171 return *this;
7272}
pcc/include/purescript.hh+4−9
@@ -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;