我在整个代码的几个地方都调用了日志记录函数。对于每个日志,我必须提供2 个编译时间常量。有两种方法可以完成:
(1) 函数参数:
template<typename T>
void log (const T &obj, const int LINE, const int COUNT)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
称之为,
log(str, __LINE__, __COUNTER__);
(2) 模板参数:
template<typename T, int LINE, int COUNT>
void log (T &obj)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
称之为,
log<__LINE__, __COUNTER__>(str);
我无法决定,因为第一种方法提供了简单性,但我们在编译时传递常量。第二种方法是完美的,但编译时间可能会增加。这个任务很繁琐,我还没有实现它们,所以我没有任何基准。
如果有人可以从他们的经验/知识中回答这个问题,那将是一个很大的帮助。