我已经在一些地方看到了这一点,为了确认我并不疯狂,我looked for other examples。显然,这也有其他风格,例如operator+ <>
。
然而,我在任何地方都没有提到它是什么,所以我想我会问。
google operator<< <>(
并不是最简单的事情: - )
答案 0 :(得分:13)
<>
)之后的 operator<<
表示它是函数模板特化。例如,使用普通的功能模板:
template <typename T>
void f(T x) { }
template<>
void f<>(int x) { } // specialization for T = int
(请注意,尖括号中可能包含模板参数,具体取决于函数模板的专用方式)
<>
也可以在函数名之后用于调用函数,以便在存在非模板函数时显式调用函数模板,该模板函数通常在重载分辨率中更匹配:
template <typename T>
void g(T x) { } // (1)
void g(int x) { } // (2)
g(42); // calls (2)
g<>(42); // calls (1)
因此,operator<< <>
不是运营商。