From 386d7a67d6ca724ff01d53710368b911c8f54ce5 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Wed, 7 May 2003 22:42:35 +0000 Subject: [PATCH] initial commit [SVN r18350] --- include/boost/implicit_cast.hpp | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 include/boost/implicit_cast.hpp diff --git a/include/boost/implicit_cast.hpp b/include/boost/implicit_cast.hpp new file mode 100755 index 0000000..865815c --- /dev/null +++ b/include/boost/implicit_cast.hpp @@ -0,0 +1,36 @@ +// Copyright David Abrahams 2003. Permission to copy, use, +// modify, sell and distribute this software is granted provided this +// copyright notice appears in all copies. This software is provided +// "as is" without express or implied warranty, and with no claim as +// to its suitability for any purpose. +#ifndef IMPLICIT_CAST_DWA200356_HPP +# define IMPLICIT_CAST_DWA200356_HPP + +# include + +namespace boost { + +// implementation originally suggested by C. Green in +// http://lists.boost.org/MailArchives/boost/msg00886.php + +// The use of identity creates a non-deduced form, so that the +// explicit template argument must be supplied +template +inline T implicit_cast (typename mpl::identity::type x) { + return x; +} + +// incomplete return type now is here +//template +//void implicit_cast (...); + +// Macro for when you need a constant expression (Gennaro Prota) +#define BOOST_IMPLICIT_CAST(dst_type, expr) \ + ( sizeof( implicit_cast(expr) ) \ + , \ + static_cast(expr) \ + ) + +} // namespace boost + +#endif // IMPLICIT_CAST_DWA200356_HPP