C ++可变参数模板参数遇到问题

MathuSum Mut

我正在尝试编写一个通用函数来记录一些调试信息,例如,我想这样调用它:

Log("auo", 34); //writes: auo34

Point point;
point.X = 10;
point.Y = 15;
Log(35, point, 10); //writes: 35{10, 15}10

但是,我在参数打包和解压缩方面遇到了各种各样的问题,我似乎无法掌握它。下面是完整的代码:

struct Point {
     long X, Y;
}

std::ofstream debugStream;

template<typename ...Rest>
void Log(Point first, Rest... params) {  //specialised for Point
    if (!debugStream.is_open())
        debugStream.open("bla.log", ios::out | ios::app);
    debugStream << "{" << first.X << ", " << first.Y << "}";
    Log(params...);
}

template<typename First, typename ...Rest>
void Log(First first, Rest... params) {  //generic
    if (!debugStream.is_open())
        debugStream.open("bla.log", ios::out | ios::app);
    debugStream << first;
    Log(params...);
}

我该如何修复功能?

代代

请使用以下简化版本:

void print() {}

template<typename First, typename... Rest>
void print(const First& first, const Rest&... rest)
{
    std::cout << first;
    print(rest...);
}

sizeof...(Rest) == 0发出不print()带参数的调用时,需要上述基本情况重载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章