diff options
Diffstat (limited to 'src/boost/libs/conversion/test/implicit_cast.cpp')
-rw-r--r-- | src/boost/libs/conversion/test/implicit_cast.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/boost/libs/conversion/test/implicit_cast.cpp b/src/boost/libs/conversion/test/implicit_cast.cpp new file mode 100644 index 000000000..eaca42a83 --- /dev/null +++ b/src/boost/libs/conversion/test/implicit_cast.cpp @@ -0,0 +1,38 @@ +// Copyright David Abrahams 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include <boost/implicit_cast.hpp> +#include <boost/detail/lightweight_test.hpp> +#include <boost/type.hpp> +using boost::implicit_cast; +using boost::type; + +template <class T> +type<T> check_return(T) { return type<T>(); } + +struct foo +{ + foo(char const*) {} + operator long() const { return 0; } +}; + +typedef type<long> long_type; +typedef type<foo> foo_type; + +int main() +{ + type<long> x = check_return(boost::implicit_cast<long>(1)); + BOOST_TEST(boost::implicit_cast<long>(1) == 1L); + + type<foo> f = check_return(boost::implicit_cast<foo>("hello")); + type<long> z = check_return(boost::implicit_cast<long>(foo("hello"))); + + // warning suppression: + (void)x; + (void)f; + (void)z; + + return boost::report_errors(); +} |