c++ - 替换参数包的包装器类型

标签 c++ variadic-templates indices

下面的工作,但我觉得它必须是可能的,而无需诉诸于在函数返回类型上使用 decltype:

    typedef std::size_t SizeT;

    template<SizeT... Indices> struct IndexList { };

    template<SizeT... Is>
    constexpr decltype(auto) ExtractIndices(std::integer_sequence<SizeT, Is...>)
    {
        return IndexList<Is...>{ };
    }

    template<SizeT N>
    using MakeIndexSequence = std::make_integer_sequence<SizeT, N>;

    template<SizeT N>
    using MakeIndexList = decltype(ExtractIndices(MakeIndexSequence<N>{ }));

是否有更好的方法来更改参数包的“包装器类型”?

最佳答案

因为您只是为 std::index_sequence 添加了别名,所以您可以更明确地这样做:

template<SizeT... Indices> 
using IndexList = std::index_sequence<Indices...>;

template<SizeT N>
using MakeIndexList = std::make_index_sequence<N>;

虽然更喜欢只使用标准库中的内容。介绍自己的名字会令人困惑。

关于c++ - 替换参数包的包装器类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36815088/

相关文章:

matlab:将向量分成固定大小的重叠 block

database - 使用来自 dbms_metadata.get_ddl 的 TIMESTAMP 表达式创建基于函数的索引后出现 ORA-01882

c - 此 C 代码中的负索引如何产生给定的输出?

c++ - 不可实例化的谷歌测试夹具父类(super class)

c++ - 在 C++ 中,是否有更有效的方法来编写多个声明

c++ - 使用 std::sort() 对自定义类的 Vector 进行排序会导致段错误

c++ - 如何对可变参数模板函数的异构参数包进行通用计算?

c++ - 使用可变参数函数的初始化列表

c++ - 没有元组的 Variadics 模板

c++ - 将 string/char 转换为 double 并使用 double 进行后续计算