小编Axe*_*xel的帖子

如何使用c ++模板有效地推出序列

我有一个复杂的类型,C取决于我在(长度有界)序列中需要的模板参数.constexpr函数next()可用于从C_n - > C_n + 1开始.由于每个序列元素都有不同的类型,我使用a std::tuple来存储结果.这些mkTuple()函数负责(有限的)序列推出.

这是我所做的一个简化示例(使用std::array占位符表示我更复杂的C):

#include <array>
#include <tuple>
#include <iostream>


template<std::size_t OFFSET>
using C=std::array<uint8_t, OFFSET>;

static
constexpr
std::size_t
next(const std::size_t START, const std::size_t DISTANCE)
{
    return START + DISTANCE;
}


template<template<std::size_t OFFSET> class CONTENT, std::size_t START, std::size_t DISTANCE, std::size_t SEQ_LENGTH>
struct mkTuple
{
    using _LT = CONTENT<START>;
    using _RT = typename mkTuple<CONTENT, next(START, DISTANCE), DISTANCE, SEQ_LENGTH - 1>::tuple;
    using tuple=decltype(std::tuple_cat(std::make_tuple(_LT()), _RT()));
};


template<template<std::size_t OFFSET> class CONTENT, std::size_t …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11 stdtuple

10
推荐指数
1
解决办法
484
查看次数

标签 统计

c++ ×1

c++11 ×1

stdtuple ×1

templates ×1