gpt4 book ai didi

c++ - 多态 lambda 的非类型模板参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:27 28 4
gpt4 key购买 nike

是否可以这样写?

[](std::index_sequence<std::size_t ...I> s) {

};

还是这个?

[]<std::size_t ...I>(std::index_sequence<I...> s) { 

}

C++14 或 C++17 中的语法如何?或者根本不可能?基本上,我只想将 I 作为模板参数包,而 lambda 只是一种实现方式。或者,是否有实现以下目标的语法?

std::index_sequence<std::size_t ...I> x = std::make_index_sequence<10>{};

// I now is a local template parameter pack

最佳答案

GCC 提供后一种语法 as an extension ,但这不是标准的:

template <typename... Ts>
void foo(const std::tuple<Ts...>& t) {
auto l = [&t]<std::size_t ...I>(std::index_sequence<I...> s) {
std::initializer_list<int>{ (std::cout << std::get<I>(t), 0)... };
};

l(std::index_sequence_for<Ts...>{});
}

Live Demo

关于c++ - 多态 lambda 的非类型模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38630892/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com