diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2018-03-05 22:08:59 +0200 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2018-03-06 10:08:09 +0200 |
commit | b2286c6c8f9076de4143061a778fc676cc15eb84 (patch) | |
tree | 66afddb456cf35e99c0a4c4c8b32433f9811da76 /deps/tao_tuple/28626e99/include/tao/seq/fold.hpp | |
parent | e8d6303d783a124aa5ba2fcf797df80a88ed546f (diff) | |
download | qtlocation-mapboxgl-b2286c6c8f9076de4143061a778fc676cc15eb84.tar.gz |
Bump Mapbox GL Native
mapbox-gl-native @ ae0e583590ce8d7a564c8d9cb7c0fcee5515125e
Follow-up, added missing headers.
Diffstat (limited to 'deps/tao_tuple/28626e99/include/tao/seq/fold.hpp')
-rw-r--r-- | deps/tao_tuple/28626e99/include/tao/seq/fold.hpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/deps/tao_tuple/28626e99/include/tao/seq/fold.hpp b/deps/tao_tuple/28626e99/include/tao/seq/fold.hpp new file mode 100644 index 0000000000..fa05c6fce7 --- /dev/null +++ b/deps/tao_tuple/28626e99/include/tao/seq/fold.hpp @@ -0,0 +1,57 @@ +// The Art of C++ / Sequences +// Copyright (c) 2015 Daniel Frey + +#ifndef TAOCPP_SEQUENCES_INCLUDE_FOLD_HPP +#define TAOCPP_SEQUENCES_INCLUDE_FOLD_HPP + +#include <type_traits> + +#include "values.hpp" +#include "integer_sequence.hpp" +#include "make_integer_sequence.hpp" + +namespace tao +{ + namespace seq + { + namespace impl + { + template< template< typename U, U, U > class, typename, bool, typename T, T... > + struct folder; + + template< template< typename U, U, U > class OP, std::size_t... Is, typename T, T... Ns > + struct folder< OP, index_sequence< Is... >, false, T, Ns... > + { + using values = seq::values< T, Ns... >; + using type = integer_sequence< T, OP< T, values::data[ 2 * Is ], values::data[ 2 * Is + 1 ] >::value... >; + }; + + template< template< typename U, U, U > class OP, std::size_t... Is, typename T, T N, T... Ns > + struct folder< OP, index_sequence< Is... >, true, T, N, Ns... > + { + using values = seq::values< T, Ns... >; + using type = integer_sequence< T, N, OP< T, values::data[ 2 * Is ], values::data[ 2 * Is + 1 ] >::value... >; + }; + } + + template< template< typename U, U, U > class, typename T, T... > + struct fold; + + template< template< typename U, U, U > class OP, typename T, T N > + struct fold< OP, T, N > + : std::integral_constant< T, N > + {}; + + template< template< typename U, U, U > class OP, typename T, T... Ns > + struct fold + : fold< OP, typename impl::folder< OP, make_index_sequence< sizeof...( Ns ) / 2 >, sizeof...( Ns ) % 2 == 1, T, Ns... >::type > + {}; + + template< template< typename U, U, U > class OP, typename T, T... Ns > + struct fold< OP, integer_sequence< T, Ns... > > + : fold< OP, T, Ns... > + {}; + } +} + +#endif // TAOCPP_SEQUENCES_INCLUDE_FOLD_HPP |