【发布时间】:2016-07-25 16:36:59
【问题描述】:
考虑以下最小示例:
#include<cstddef>
template<std::size_t... I>
constexpr auto sum() { return (I + ...); }
template<bool... B>
constexpr auto check() { return (B && ...); }
int main() {
static_assert(6 == sum<1,2,3>(), "!");
// static_assert(0 == sum<>(), "!");
static_assert(check<true, true>(), "!");
static_assert(check<>(), "!");
}
注释行无法编译。
这同样适用于使用* 而不是+。
涉及布尔值的那个可以代替。
Here(工作草案)我还没有找到关于空参数包的提及。
另一边,here (isocpp) 看来上面案例的默认结果是int()。
混合折叠表达式和空参数包时的预期行为究竟是什么?
【问题讨论】:
标签: c++ templates c++17 fold-expression