有誰知道以下代碼對於enable_if的模板參數是如何工作的?作爲表達式的模板參數語法
template <int n> void f(typename std::enable_if<(n < 0)>::type* = 0) {
/* ... n is negative ... */
}
template <int n> void f(typename std::enable_if<(n >= 0)>::type* = 0) {
/* ... n is positive ... */
}
具體來說這部分(n < 0)>::type*
不使感我,因爲這看起來像編譯器的表達(n < 0)
隱式轉換成對象。
我也看到了這種風格的表達作爲一個對象在其他幾個SFINAE的例子中,但是這裏發生的事情正在逃避我。對象是在一些C++頭文件中定義的還是已經存在於標準中?如果是這樣,將這種表達方式作爲一個對象進行處理的方法是什麼?我怎樣才能讀懂這方面的更多內容?
非常感謝。