1 // Copyright David Abrahams 2003.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef IMPLICIT_CAST_DWA200356_HPP
6 # define IMPLICIT_CAST_DWA200356_HPP
7 
8 namespace boost {
9 
10 namespace detail {
11 
12 template<class T> struct icast_identity
13 {
14     typedef T type;
15 };
16 
17 } // namespace detail
18 
19 // implementation originally suggested by C. Green in
20 // http://lists.boost.org/MailArchives/boost/msg00886.php
21 
22 // The use of identity creates a non-deduced form, so that the
23 // explicit template argument must be supplied
24 template <typename T>
implicit_cast(typename boost::detail::icast_identity<T>::type x)25 inline T implicit_cast (typename boost::detail::icast_identity<T>::type x) {
26     return x;
27 }
28 
29 // incomplete return type now is here
30 //template <typename T>
31 //void implicit_cast (...);
32 
33 } // namespace boost
34 
35 
36 #endif // IMPLICIT_CAST_DWA200356_HPP
37