我想写一个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)...);
}
这是一个基于这项工作的递归解决方案(此处也有解释)