由于我无法找到这样的函数(是否不正确?),因此我正在尝试创建一个编译时函数(constexpr
函数),该函数接受一个std::array<T,n> arr
和一个T t
,并返回一个新的std::array<T,n + 1>
,其中包含t
添加到arr
的末尾。我开始尝试以下内容:
template <typename T, int n>
constexpr std::array<T,n+1> append(std::array<T,n> a, T t);
template <typename T>
constexpr std::array<T,1> append(std::array<T,0> a, T t)
{
return std::array<T,1>{t};
}
template <typename T>
constexpr std::array<T,2> append(std::array<T,1> a, T t)
{
return std::array<T,2>{a[0], t};
}
我卡住了。我需要一种方法,在初始化列表的前 n
个位置上扩展 a
,然后再在末尾添加 t
。这可能吗?或者还有其他方法可以做到这一点吗?
integer_sequence
,例如这个,因为它不幸地不能直接使用。 - W.F.