由兩個GCC-4.9.2和鐺-3.8爲C++ 98或C++ 11編譯時接受,語法明確的模板特
#include <cstdio>
template <typename T> void f(T) { printf("T\n"); }
template <> void f<int>(int) { printf("int\n"); } // explicit specialization
template <> void f<>(double) { printf("double\n"); } // explicit specialization -- 14.7.2(7)
template <> void f(float) { printf("float\n"); } // HERE
int main() {
f(1L); // T
f(10); // int
f(10.0); // double
f(10.0F); // float
}
我看到以下,在C + +11標準§14.7.2(7)允許在顯式模板專門化中推斷尾隨模板參數,但是我找不到標記爲HERE
的terser表單是否被允許。
這些編譯器是符合的還是這個擴展?
這些都不是明確的實例化。他們是明確的*專業*。 –
@ T.C。 ups&謝謝,現在修復。 –
我沒有準確的引用標準,但我記得如果可以推導出類型,至少可以省略函數調用的尖括號。專業化可能也是如此。 – vsoftco