mirror of
https://github.com/yuzu-emu/ext-boost.git
synced 2025-01-08 23:15:39 +00:00
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
|
|
|