#include <utility>
#include <tuple>
template < typename T, typename U >
void h(T, U)
{
}
template < typename... T, typename... U >
void f(std::tuple <T...> t, std::tuple <U...> u)
{
auto g = [&] < std::size_t... I > (std::index_sequence <I...>)
{
bool const r[]{((void)h(std::get <I>(t), std::get <I>(u)), false)...};
(void)r;
};
g(std::index_sequence_for <T...>());
}
int main()
{
f(std::make_tuple(0L, 0LL), std::make_tuple(0UL, 0ULL));
}
Вышеприведенные компилирует с g++ test_templated_lambda.cpp -o test_templated_lambda -std=c++14
, но не компилируется с clang++ test_templated_lambda.cpp -o test_templated_lambda -std=c++14
Generic лямбда-функции с параметрами шаблона
Я знаю, что это расширение GCC (Using template parameter in a generic lambda), но есть какой-то способ сделать это без написания out g
как бесплатная функция
полезное. Но я пытаюсь избежать определения другой функции полезности – zrb