diff --git a/sprout/functional/ref.hpp b/sprout/functional/ref.hpp index 27ffb812..bd231c67 100644 --- a/sprout/functional/ref.hpp +++ b/sprout/functional/ref.hpp @@ -2,6 +2,7 @@ #define SPROUT_FUNCTIONAL_REF_HPP #include +#include #include #include #include @@ -232,6 +233,11 @@ namespace sprout { typedef T type; }; template + struct unwrap_reference > { + public: + typedef T type; + }; + template struct unwrap_reference : public sprout::unwrap_reference {}; @@ -258,6 +264,11 @@ namespace sprout { typedef T& type; }; template + struct strip_reference > { + public: + typedef T& type; + }; + template struct strip_reference : public sprout::strip_reference {}; @@ -292,6 +303,11 @@ namespace sprout { get_pointer(sprout::reference_wrapper const& r) { return r.get_pointer(); } + template + inline SPROUT_CONSTEXPR T* + get_pointer(std::reference_wrapper const& r) { + return &r.get(); + } } // namespace sprout #endif // #ifndef SPROUT_FUNCTIONAL_REF_HPP diff --git a/sprout/tuple/tuple/make_tuple.hpp b/sprout/tuple/tuple/make_tuple.hpp index 51ecf7e4..5e5ca610 100644 --- a/sprout/tuple/tuple/make_tuple.hpp +++ b/sprout/tuple/tuple/make_tuple.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -15,7 +16,7 @@ namespace sprout { // make_tuple // template - inline SPROUT_CONSTEXPR sprout::tuples::tuple::type...> + inline SPROUT_CONSTEXPR sprout::tuples::tuple::type>::type...> make_tuple(Types&&... args) { return sprout::tuples::tuple::type...>(sprout::forward(args)...); }