Requires messy cast-and-macro-laden code to get working right.
这种方式不是类型安全的。需要繁杂的类型转换和宏装载代码来保证正确动作。...error(7, "this", "is", "an", "error"); // crash
const char* is = "is";
string an = "an"...;
error(7, "this", "is", an, "error"); // crash
}
Alternative: Overloading....error(5, "this", "is", "not", "an", "error"); // No crash!...std::string an = "an";
error(7, "this", "is", "not", an, "error"); // No crash!