カンマ演算子のオーバーロードを非常に思いとどまらせるStackOverflowに関する他の投稿を見てきました。次のようなコンマ演算子のオーバーロードを伴う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");
誰かがこれが良いまたは悪い使用例である理由を説明できますか?