4
#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
通用lambda函数
编译我知道这是一个GCC扩展(Using template parameter in a generic lambda),但有一些方法来做到这一点没有写出g
作为一个自由函数
有用的。但我试图避免定义另一个效用函数 – zrb