| Index: third_party/boost/boost/utility/enable_if.hpp
|
| diff --git a/third_party/boost/boost/utility/enable_if.hpp b/third_party/boost/boost/utility/enable_if.hpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e076e7b80c2d767398575355ab1e521de04dd90f
|
| --- /dev/null
|
| +++ b/third_party/boost/boost/utility/enable_if.hpp
|
| @@ -0,0 +1,119 @@
|
| +// Boost enable_if library
|
| +
|
| +// Copyright 2003 © The Trustees of Indiana University.
|
| +
|
| +// Use, modification, and distribution is subject to 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)
|
| +
|
| +// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
|
| +// Jeremiah Willcock (jewillco at osl.iu.edu)
|
| +// Andrew Lumsdaine (lums at osl.iu.edu)
|
| +
|
| +
|
| +#ifndef BOOST_UTILITY_ENABLE_IF_HPP
|
| +#define BOOST_UTILITY_ENABLE_IF_HPP
|
| +
|
| +#include "boost/config.hpp"
|
| +
|
| +// Even the definition of enable_if causes problems on some compilers,
|
| +// so it's macroed out for all compilers that do not support SFINAE
|
| +
|
| +#ifndef BOOST_NO_SFINAE
|
| +
|
| +namespace boost
|
| +{
|
| +
|
| + template <bool B, class T = void>
|
| + struct enable_if_c {
|
| + typedef T type;
|
| + };
|
| +
|
| + template <class T>
|
| + struct enable_if_c<false, T> {};
|
| +
|
| + template <class Cond, class T = void>
|
| + struct enable_if : public enable_if_c<Cond::value, T> {};
|
| +
|
| + template <bool B, class T>
|
| + struct lazy_enable_if_c {
|
| + typedef typename T::type type;
|
| + };
|
| +
|
| + template <class T>
|
| + struct lazy_enable_if_c<false, T> {};
|
| +
|
| + template <class Cond, class T>
|
| + struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
|
| +
|
| +
|
| + template <bool B, class T = void>
|
| + struct disable_if_c {
|
| + typedef T type;
|
| + };
|
| +
|
| + template <class T>
|
| + struct disable_if_c<true, T> {};
|
| +
|
| + template <class Cond, class T = void>
|
| + struct disable_if : public disable_if_c<Cond::value, T> {};
|
| +
|
| + template <bool B, class T>
|
| + struct lazy_disable_if_c {
|
| + typedef typename T::type type;
|
| + };
|
| +
|
| + template <class T>
|
| + struct lazy_disable_if_c<true, T> {};
|
| +
|
| + template <class Cond, class T>
|
| + struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
|
| +
|
| +} // namespace boost
|
| +
|
| +#else
|
| +
|
| +namespace boost {
|
| +
|
| + namespace detail { typedef void enable_if_default_T; }
|
| +
|
| + template <typename T>
|
| + struct enable_if_does_not_work_on_this_compiler;
|
| +
|
| + template <bool B, class T = detail::enable_if_default_T>
|
| + struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <bool B, class T = detail::enable_if_default_T>
|
| + struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <bool B, class T = detail::enable_if_default_T>
|
| + struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <bool B, class T = detail::enable_if_default_T>
|
| + struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <class Cond, class T = detail::enable_if_default_T>
|
| + struct enable_if : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <class Cond, class T = detail::enable_if_default_T>
|
| + struct disable_if : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <class Cond, class T = detail::enable_if_default_T>
|
| + struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| + template <class Cond, class T = detail::enable_if_default_T>
|
| + struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
|
| + { };
|
| +
|
| +} // namespace boost
|
| +
|
| +#endif // BOOST_NO_SFINAE
|
| +
|
| +#endif
|
|
|