/usr/include/boost/thread/detail
Edit: /usr/include/boost/thread/detail/make_tuple_indices.hpp (9004B)
// Copyright (C) 2012-2013 Vicente J. Botet Escriba
//
// 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)
// 2013/04 Vicente J. Botet Escriba
// Provide implementation up to 10 parameters when BOOST_NO_CXX11_VARIADIC_TEMPLATES is defined.
// 2012/11 Vicente J. Botet Escriba
// Adapt to boost libc++ implementation
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
// The make_tuple_indices C++11 code is based on the one from libcxx.
//===----------------------------------------------------------------------===//
#ifndef BOOST_THREAD_DETAIL_MAKE_TUPLE_INDICES_HPP
#define BOOST_THREAD_DETAIL_MAKE_TUPLE_INDICES_HPP
#include
#include
namespace boost
{
namespace detail
{
#if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
// make_tuple_indices
template struct tuple_indices
{};
template
struct make_indices_imp;
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_tuple_indices
{
BOOST_STATIC_ASSERT_MSG(Sp <= Ep, "make_tuple_indices input error");
typedef typename make_indices_imp, Ep>::type type;
};
#else
// - tuple forward declaration -----------------------------------------------
template <
std::size_t T0 = 0, std::size_t T1 = 0, std::size_t T2 = 0,
std::size_t T3 = 0, std::size_t T4 = 0, std::size_t T5 = 0,
std::size_t T6 = 0, std::size_t T7 = 0, std::size_t T8 = 0,
std::size_t T9 = 0>
class tuple_indices {};
template
struct make_indices_imp;
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
template
struct make_indices_imp, Ep>
{
typedef typename make_indices_imp, Ep>::type type;
};
// template
// struct make_indices_imp, Ep>
// {
// typedef typename make_indices_imp, Ep>::type type;
// };
template
struct make_indices_imp, Ep>
{
typedef tuple_indices<> type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_indices_imp, Ep>
{
typedef tuple_indices type;
};
template
struct make_tuple_indices
{
BOOST_STATIC_ASSERT_MSG(Sp <= Ep, "make_tuple_indices input error");
typedef typename make_indices_imp, Ep>::type type;
};
#endif
}
}
#endif // header