/* * Copyright 2019 by its authors. See AUTHORS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ELDBUS_CXX_ELDBUS_INTEGER_SEQUENCE_HH #define ELDBUS_CXX_ELDBUS_INTEGER_SEQUENCE_HH namespace efl { namespace eldbus { namespace _detail { template struct integer_sequence { typedef T value_type; static constexpr std::size_t size() { return sizeof...(Ints); } typedef integer_sequence type; }; template struct concat; template struct concat, integer_sequence > : integer_sequence {}; template using Concat = typename concat::type; template struct gen_seq; template using make_integer_sequence = typename gen_seq::type; template struct gen_seq : Concat , make_integer_sequence>{}; template<> struct gen_seq : integer_sequence{}; template<> struct gen_seq : integer_sequence{}; template using index_sequence = integer_sequence; template using make_index_sequence = make_integer_sequence; } } } #endif