BVB Source Codes

mars Show index_sequence.hpp Source code

Return Download mars: download index_sequence.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. //          Copyright Oliver Kowalke 2014.
  3. // Distributed under the Boost Software License, Version 1.0.
  4. //    (See accompanying file LICENSE_1_0.txt or copy at
  5. //          http://www.boost.org/LICENSE_1_0.txt)
  6.  
  7. #ifndef BOOST_CONTEXT_DETAIL_INDEX_SEQUENCE_H
  8. #define BOOST_CONTEXT_DETAIL_INDEX_SEQUENCE_H
  9.  
  10. #include <cstddef>
  11.  
  12. #include <boost/config.hpp>
  13.  
  14. #include <boost/context/detail/config.hpp>
  15.  
  16. #ifdef BOOST_HAS_ABI_HEADERS
  17. # include BOOST_ABI_PREFIX
  18. #endif
  19.  
  20. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  21. namespace context {
  22. namespace detail {
  23.  
  24. #if ! defined(BOOST_CONTEXT_NO_CXX14_INTEGER_SEQUENCE)
  25. template< std::size_t ... I >
  26. using index_sequence = std::index_sequence< I ... >;
  27. template< std::size_t I >
  28. using make_index_sequence = std::make_index_sequence< I >;
  29. template< typename ... T >
  30. using index_sequence_for = std::index_sequence_for< T ... >;
  31. #else
  32. //http://stackoverflow.com/questions/17424477/implementation-c14-make-integer-sequence
  33.  
  34. template< std::size_t ... I >
  35. struct index_sequence {
  36.     using type = index_sequence;
  37.     using value_type = std::size_t;
  38.     static constexpr std::size_t size() {
  39.         return sizeof ... (I);
  40.     }
  41. };
  42.  
  43. template< typename Seq1, typename Seq2 >
  44. struct concat_sequence;
  45.  
  46. template< std::size_t ... I1, std::size_t ... I2 >
  47. struct concat_sequence< index_sequence< I1 ... >, index_sequence< I2 ... > > : public index_sequence< I1 ..., (sizeof ... (I1)+I2) ... > {
  48. };
  49.  
  50. template< std::size_t I >
  51. struct make_index_sequence : public concat_sequence< typename make_index_sequence< I/2 >::type,
  52.                                                      typename make_index_sequence< I-I/2 >::type > {
  53. };
  54.  
  55. template<>
  56. struct make_index_sequence< 0 > : public index_sequence<> {
  57. };
  58. template<>
  59. struct make_index_sequence< 1 > : public index_sequence< 0 > {
  60. };
  61.  
  62. template< typename ... T >
  63. using index_sequence_for = make_index_sequence< sizeof ... (T) >;
  64. #endif
  65.  
  66. }}}
  67.  
  68. #ifdef BOOST_HAS_ABI_HEADERS
  69. #include BOOST_ABI_SUFFIX
  70. #endif
  71.  
  72. #endif // BOOST_CONTEXT_DETAIL_INDEX_SEQUENCE_H
  73.  
downloadindex_sequence.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top