我在 Stack Overflow 上看到过其他帖子,这些帖子非常不鼓励逗号运算符的重载。我收到了一个带有逗号运算符重载的 Github 拉取请求,如下所示:
class Mylogger {
public:
template <typename T>
Mylogger & operator,(const T & val) {
std::cout << val;
return * this;
}
};
#define Log(level,args...) \
do { Mylogger logv; logv,level, ":", ##args; } while (0)
然后你可以按如下方式使用它:
Log(2, "INFO: setting variable \", 1, "\"\n");
有人可以解释为什么这是一个好的或坏的用例吗?