diff options
Diffstat (limited to 'boost/compute/functional/convert.hpp')
-rw-r--r-- | boost/compute/functional/convert.hpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/boost/compute/functional/convert.hpp b/boost/compute/functional/convert.hpp new file mode 100644 index 0000000000..f182e8ec72 --- /dev/null +++ b/boost/compute/functional/convert.hpp @@ -0,0 +1,51 @@ +//---------------------------------------------------------------------------// +// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com> +// +// 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 +// +// See http://boostorg.github.com/compute for more information. +//---------------------------------------------------------------------------// + +#ifndef BOOST_COMPUTE_FUNCTIONAL_CONVERT_HPP +#define BOOST_COMPUTE_FUNCTIONAL_CONVERT_HPP + +namespace boost { +namespace compute { +namespace detail { + +template<class T, class Arg> +struct invoked_convert +{ + invoked_convert(const Arg &arg) + : m_arg(arg) + { + } + + Arg m_arg; +}; + +} // end detail namespace + +/// The \ref convert function converts its argument to type \c T (similar to +/// static_cast<T>). +/// +/// \see \ref as "as<T>" +template<class T> +struct convert +{ + typedef T result_type; + + /// \internal_ + template<class Arg> + detail::invoked_convert<T, Arg> operator()(const Arg &arg) const + { + return detail::invoked_convert<T, Arg>(arg); + } +}; + +} // end compute namespace +} // end boost namespace + +#endif // BOOST_COMPUTE_FUNCTIONAL_CONVERT_HPP |