bool eq(int x, int y) {
return x == y;
}
TEST_CASE("operator vs. function call") {
int x = 1;
int y = 2;
CHECK(x == y);
CHECK(eq(x, y));
}
我得到以下输出
/path/to/MyTest.cpp:8: Failure:
CHECK(x == y)
with expansion:
1 == 2
/path/to/MyTest.cpp:9: Failure:
CHECK(eq(x, y))
with expansion:
false
为什么能赶上转换x
和y
到字符串运算符表达式x == y
但不在函数调用表达式eq(x, y)
中?是它在某种程度上可能字符串化以类似的方式函数调用表达式得到的输出是这样的:
/path/to/MyTest.cpp:9: Failure:
CHECK(eq(x, y))
with expansion:
eq(1, 2)