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