非常简单的可变参数函数的问题
Problem with very simple variadic function
我正在尝试在 C++ 中使用可变参数模板来使用非常简单的日志函数:
void log(){}
template <typename T, typename... Types>
void log(T first, Types... arg)
{
std::cout << first << " ";
log(arg...);
}
int main()
{
log(1,2);
log(3, "four");
log(5);
log(6,"seven",8,9,10,11,12);
log(13,14);
}
但是在输出中,如果是整数(2、5、12 和 14[=19,我将丢失日志函数的所有最后一个参数=]) 但如果它们是字符串则不是 ("four") !??.这是为什么?我做错了什么?
output: 1 3 four 6 seven 8 9 10 11 13
谜团已解 - 当使用 MSVC 编译时,当只有一个数字参数时,您选择的名称 log
与标准库中的 log
函数冲突。由于这不会打印任何内容,因此缺少输出。
只需使用另一个名称即可。
我正在尝试在 C++ 中使用可变参数模板来使用非常简单的日志函数:
void log(){}
template <typename T, typename... Types>
void log(T first, Types... arg)
{
std::cout << first << " ";
log(arg...);
}
int main()
{
log(1,2);
log(3, "four");
log(5);
log(6,"seven",8,9,10,11,12);
log(13,14);
}
但是在输出中,如果是整数(2、5、12 和 14[=19,我将丢失日志函数的所有最后一个参数=]) 但如果它们是字符串则不是 ("four") !??.这是为什么?我做错了什么?
output: 1 3 four 6 seven 8 9 10 11 13
谜团已解 - 当使用 MSVC 编译时,当只有一个数字参数时,您选择的名称 log
与标准库中的 log
函数冲突。由于这不会打印任何内容,因此缺少输出。
只需使用另一个名称即可。