Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp1y/pr68388.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile { target c++14 } } namespace std { typedef int size_t; template <std::size_t... Indexes> struct index_sequence {}; } template <class...> class Tuple {}; template <std::size_t I, class TFirst> auto get(Tuple<TFirst>) { return TFirst(); } template <std::size_t I, class Functor, class T1, class T2> auto apply_impl(Functor f, T1 t1, T2 t2) { return f(get<I>(t1), get<I>(t2)); } template <std::size_t... Indexes, class Functor, class T1, class T2> auto map_impl(std::index_sequence<Indexes...>, Functor f, T1 t1, T2 t2) { Tuple<decltype(apply_impl<Indexes>(f, t1, t2))...>(); } template <class Functor, class T1, class T2> auto map_impl(Functor f, T1 t1, T2 t2) { map_impl(std::index_sequence<0>(), f, t1, t2); } struct Less { template <class Lhs, class Rhs> auto operator()(Lhs lhs, Rhs rhs) -> decltype(lhs < rhs) { return lhs < rhs; } }; int main() { auto t1 = Tuple<int>(); auto t2 = Tuple<int>(); map_impl(Less(), t1, t2); }