【发布时间】:2021-11-18 08:27:41
【问题描述】:
我已经编写函数来推断我转发给函数的参数数量。像这样的:
template<typename Arg>
constexpr size_t get_init_size(Arg arg, size_t i) {
return i + 1;
}
template<typename T, typename ... Args>
constexpr size_t get_init_size(T First_arg, Args ... args, size_t i) {
return get_init_size(args... , i + 1);
}
auto create_ipv4_header() {
size_t x = get_init_size(0b01, 0b10, 0b01, static_cast<size_t>(0));
return x //<= must return 3
}
但是编译器写道: 错误:没有匹配的函数调用 'get_init_size(int, int, int, size_t)' 所以这是可变参数模板的问题?如果我将可变参数模板更改为这样的东西,还有一件事:
template<typename T, typename ... Args>
constexpr size_t get_init_size(T First_arg, Args ... args, size_t i = 0)
我可以把最后一个参数放下吗?(我没有用可变参数模板测试它)谢谢你的帮助!
【问题讨论】: