mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-09 02:26:06 -05:00
4ebe6417a5
git-subtree-dir: boost git-subtree-split: b4feb19f287ee92d87a9624b5d36b7cf46aeadeb
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
// Copyright (C) 2006 Arkadiy Vertleyb
|
|
// Use, modification and distribution is subject to the Boost Software
|
|
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
#ifndef BOOST_TYPEOF_NATIVE_HPP_INCLUDED
|
|
#define BOOST_TYPEOF_NATIVE_HPP_INCLUDED
|
|
|
|
#ifndef MSVC_TYPEOF_HACK
|
|
|
|
#ifdef BOOST_NO_SFINAE
|
|
|
|
namespace boost { namespace type_of {
|
|
|
|
template<class T>
|
|
T& ensure_obj(const T&);
|
|
|
|
}}
|
|
|
|
#else
|
|
|
|
#include <boost/type_traits/is_function.hpp>
|
|
#include <boost/utility/enable_if.hpp>
|
|
|
|
namespace boost { namespace type_of {
|
|
# ifdef BOOST_NO_SFINAE
|
|
template<class T>
|
|
T& ensure_obj(const T&);
|
|
# else
|
|
template<typename T>
|
|
typename enable_if<is_function<T>, T&>::type
|
|
ensure_obj(T&);
|
|
|
|
template<typename T>
|
|
typename disable_if<is_function<T>, T&>::type
|
|
ensure_obj(const T&);
|
|
# endif
|
|
}}
|
|
|
|
#endif//BOOST_NO_SFINAE
|
|
|
|
#define BOOST_TYPEOF(expr) BOOST_TYPEOF_KEYWORD(boost::type_of::ensure_obj(expr))
|
|
#define BOOST_TYPEOF_TPL BOOST_TYPEOF
|
|
|
|
#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
|
|
struct name {\
|
|
typedef BOOST_TYPEOF_TPL(expr) type;\
|
|
};
|
|
|
|
#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
|
|
struct name {\
|
|
typedef BOOST_TYPEOF(expr) type;\
|
|
};
|
|
|
|
#endif//MSVC_TYPEOF_HACK
|
|
|
|
#define BOOST_TYPEOF_REGISTER_TYPE(x)
|
|
#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
|
|
|
|
#endif//BOOST_TYPEOF_NATIVE_HPP_INCLUDED
|
|
|