今天在看到中文版C++ Primer 4/4的16.1.6這一小節時,有這樣一段敘述:『有些讀者可能會認為大小比較動作如果以<和>運算子執行,會更自然些:
//預期的比較動作
if(v1 < v2) return -1;
if(v1 > v2) return 1;
return 0;
然而若寫成這樣:
//預期的比較動作
if(v1 < v2) return -1;
if(v1 > v2) return 1;
return 0;
就是減少「對引數型別的需求量」。在這兒,引數型別必須支援<但不必同時支援>。』
等一下,這兩段程式碼為何一模一樣?作者到底要表達什麼?我只好翻看英文版的說明:『Some readers might think it would be more natural for the comparisons to be done using both the < and > operators:
// expected comparison
if (v1 < v2) return -1;
if (v1 > v2) return 1;
return 0;
However, by writing the code as
// expected comparison if (v1 < v2) return -1; if (v2 < v1) return 1; // equivalent to v1 > v2 return 0;
we reduce the requirements on types that can be used with our compare function. Those types must support <, but they need not also support >.』
看出錯誤來了,原來是v2 < v1喔,哈哈!發現書中有bug,超有成就感的!