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/sum.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/sum.hpp')
-rw-r--r-- | deps/tao_tuple/28626e99/include/tao/seq/sum.hpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/deps/tao_tuple/28626e99/include/tao/seq/sum.hpp b/deps/tao_tuple/28626e99/include/tao/seq/sum.hpp new file mode 100644 index 0000000000..67ac671582 --- /dev/null +++ b/deps/tao_tuple/28626e99/include/tao/seq/sum.hpp @@ -0,0 +1,72 @@ +// The Art of C++ / Sequences +// Copyright (c) 2015-2016 Daniel Frey + +#ifndef TAOCPP_SEQUENCES_INCLUDE_SUM_HPP +#define TAOCPP_SEQUENCES_INCLUDE_SUM_HPP + +#include <type_traits> +#include <utility> + +#include "integer_sequence.hpp" +#include "config.hpp" + +#ifndef TAOCPP_FOLD_EXPRESSIONS +#include <cstddef> +#include "make_integer_sequence.hpp" +#endif + +namespace tao +{ + namespace seq + { + +#ifdef TAOCPP_FOLD_EXPRESSIONS + + template< typename T, T... Ns > + struct sum + : std::integral_constant< T, ( Ns + ... + T( 0 ) ) > + {}; + +#else + + namespace impl + { + template< std::size_t, std::size_t N > + struct chars + { + char dummy[ N + 1 ]; + }; + + template< typename, std::size_t... > + struct collector; + + template< std::size_t... Is, std::size_t... Ns > + struct collector< index_sequence< Is... >, Ns... > + : chars< Is, Ns >... + {}; + + template< std::size_t N, typename T, T... Ns > + struct sum + { + using type = std::integral_constant< + T, + T( sizeof( collector< make_index_sequence< N >, ( ( Ns > 0 ) ? Ns : 0 )... > ) - N ) - + T( sizeof( collector< make_index_sequence< N >, ( ( Ns < 0 ) ? -Ns : 0 )... > ) - N ) >; + }; + } + + template< typename T, T... Ns > + struct sum + : impl::sum< sizeof...( Ns ) + 1, T, Ns..., 0 >::type + {}; + +#endif + + template< typename T, T... Ns > + struct sum< integer_sequence< T, Ns... > > + : sum< T, Ns... > + {}; + } +} + +#endif // TAOCPP_SEQUENCES_INCLUDE_SUM_HPP |