Joh*_*itb 5 c++ polymorphism variadic-templates index-sequence
有没有可能写出这样的东西?
[](std::index_sequence<std::size_t ...I> s) {
};
Run Code Online (Sandbox Code Playgroud)
或这个?
[]<std::size_t ...I>(std::index_sequence<I...> s) {
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
GCC 提供了后一种语法作为扩展,但它不是标准的:
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...>{});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |