可变参数函数:表达式包含未展开的参数包'args'



我想写一个vey简单的日志函数,它接受任意数量的参数并将它们输出到控制台。示例用法:

LOG("hello");
LOG("hello", 1, 0.6);

我开始像这个一样实现它

template<typename... Args>
void LOG(Args... args) {
    va_list vargs;
    va_start(vargs, args);
    // for (auto arg: vargs) {}
}

但是编译器(clang++)在标题中给了我错误

expression contains unexpanded parameter pack 'args'

有什么帮助吗?感谢

你可以试试这个:

void LOG() {
    cout << endl;
}
template<class T, class... OtherArgs> void LOG(T&& var, OtherArgs&&... args) {
    cout << std::forward<T>(var);
    LOG(std::forward<OtherArgs>(args)...);
}

这是一个基于这项工作的递归解决方案(此处也有解释)

相关内容

  • 没有找到相关文章

最新更新