From 3b98f3439e33b15bba2036c402f9925340fdb2b9 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 29 Jun 2013 23:23:43 -0700 Subject: Poison std::string and use the various string classes --- src/common/utils2.hpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/common/utils2.hpp') diff --git a/src/common/utils2.hpp b/src/common/utils2.hpp index d7d6f8a..119cc13 100644 --- a/src/common/utils2.hpp +++ b/src/common/utils2.hpp @@ -248,4 +248,33 @@ typename std::enable_if::value, std::unique_ptr(new E[sz]()); } +template +const T& const_(T& t) +{ + return t; +} + +template +T no_cast(U&& u) +{ + typedef typename std::remove_reference::type Ti; + typedef typename std::remove_reference::type Ui; + typedef typename std::remove_cv::type Tb; + typedef typename std::remove_cv::type Ub; + static_assert(std::is_same::value, "not no cast"); + return std::forward(u); +} + +template +T base_cast(U&& u) +{ + static_assert(std::is_reference::value, "must base cast with references"); + typedef typename std::remove_reference::type Ti; + typedef typename std::remove_reference::type Ui; + typedef typename std::remove_cv::type Tb; + typedef typename std::remove_cv::type Ub; + static_assert(std::is_base_of::value, "not base cast"); + return std::forward(u); +} + #endif // UTILS2_HPP -- cgit v1.2.3-60-g2f50