38 lines
1.2 KiB
Plaintext
38 lines
1.2 KiB
Plaintext
//-----------------------------------------------------------------------------
|
|
// boost variant/detail/has_result_type.hpp header file
|
|
// See http://www.boost.org for updates, documentation, and revision history.
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (c) 2014-2015 Antony Polukhin
|
|
//
|
|
// 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)
|
|
|
|
#ifndef BOOST_VARIANT_DETAIL_HAS_RESULT_TYPE_HPP
|
|
#define BOOST_VARIANT_DETAIL_HAS_RESULT_TYPE_HPP
|
|
|
|
#include <boost/config.hpp>
|
|
#include <boost/type_traits/remove_reference.hpp>
|
|
|
|
|
|
namespace boost { namespace detail { namespace variant {
|
|
|
|
template <typename T >
|
|
struct has_result_type {
|
|
private:
|
|
typedef char yes;
|
|
typedef struct { char array[2]; } no;
|
|
|
|
template<typename C> static yes test(typename boost::remove_reference<typename C::result_type>::type*);
|
|
template<typename C> static no test(...);
|
|
|
|
public:
|
|
BOOST_STATIC_CONSTANT(bool, value = sizeof(test<T>(0)) == sizeof(yes));
|
|
};
|
|
|
|
}}} // namespace boost::detail::variant
|
|
|
|
#endif // BOOST_VARIANT_DETAIL_HAS_RESULT_TYPE_HPP
|
|
|