add lvalue_forward.hpp

This commit is contained in:
bolero-MURAKAMI 2012-04-07 22:36:12 +09:00
parent 64dd2582a4
commit 30dbbc44fc
2 changed files with 25 additions and 0 deletions

View file

@ -0,0 +1,24 @@
#ifndef SPROUT_UTILITY_LVALUE_FORWARD_HPP
#define SPROUT_UTILITY_LVALUE_FORWARD_HPP
#include <type_traits>
#include <sprout/config.hpp>
#include <sprout/utility/forward.hpp>
#include <sprout/utility/as_lvalue.hpp>
#include <sprout/type_traits.hpp>
namespace sprout {
//
// lvalue_forward
//
template<typename T>
inline SPROUT_CONSTEXPR typename sprout::lvalue_reference<T>::type
lvalue_forward(typename std::remove_reference<T>::type& t) {
return sprout::as_lvalue(sprout::forward<T>(t));
}
template<typename T>
inline SPROUT_CONSTEXPR typename sprout::lvalue_reference<T>::type
lvalue_forward(typename std::remove_reference<T>::type&& t) = delete;
} // namespace sprout
#endif // #ifndef SPROUT_UTILITY_LVALUE_FORWARD_HPP

View file

@ -4,5 +4,6 @@
#include <sprout/config.hpp> #include <sprout/config.hpp>
#include <sprout/utility/as_lvalue.hpp> #include <sprout/utility/as_lvalue.hpp>
#include <sprout/utility/as_const.hpp> #include <sprout/utility/as_const.hpp>
#include <sprout/utility/lvalue_forward.hpp>
#endif // #ifndef SPROUT_UTILITY_OPERATION_EXT_HPP #endif // #ifndef SPROUT_UTILITY_OPERATION_EXT_HPP