【发布时间】:2017-06-24 03:55:50
【问题描述】:
基本上我尝试做的是
#include <array>
#include <initializer_list>
template <class... Fs>
auto F(const std::initializer_list<double>& vars, const Fs&... exprs) {
return std::array<double, vars.size()>{};
}
这当然不会编译,因为 vars 的长度不是编译器所知道的编译时常量。问题是,我确实可以在编译时知道它的长度,尽管这些值是未知的。问题是,如果我将初始化列表扩展为可变参数模板,则会产生两个可变参数包。
我是否必须将显式数字参数传递给函数?如何实现或接近所需的语义?
编辑:我不必返回数组,我只需要返回一个双精度序列,最好在堆栈上。
【问题讨论】:
-
我个人认为这是
constexpr函数的缺陷。您可以尝试使用元组进行转发,但会使语法更丑 -
std::array几乎是您从堆栈上返回一系列对象所能获得的最接近的结果。这和std::tuple