由两个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