【问题标题】:Offset for variadic template integer sequence可变参数模板整数序列的偏移量
【发布时间】:2016-02-25 10:47:12
【问题描述】:

好的,我会尽量保持简短。我知道您可以使用std::index_sequence_for 为可变参数模板生成整数序列。现在假设我希望该索引序列从特定偏移量开始,但仍与可变参数模板参数列表的长度相同。那可能吗?我在cppreference 上没有找到任何类似的东西。

【问题讨论】:

  • 展开时添加偏移量即可。
  • @ildjarn。好吧,我想这也是一种可能性。不过,这将迫使我做一些其他的改变,所以如果可以在特定范围内创建一个整数序列,那就不要这样做。
  • 我为 C++14 提出的建议只允许创建从零开始的序列,但创建其他序列很简单,请参阅gitlab.com/redistd/integer_seq/blob/master/integer_seq_util.h

标签: c++ templates c++11 c++14


【解决方案1】:

您可以轻松编写自己的代码:

template <std::size_t Offset, std::size_t ... Is>
std::index_sequence<(Offset + Is)...> add_offset(std::index_sequence<Is...>)
{
    return {};
}

template <std::size_t Offset, std::size_t N>
auto make_index_sequence_with_offset()
{
    return add_offset<Offset>(std::make_index_sequence<N>{});
}

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    相关资源
    最近更新 更多