Что такое оператор << <> в C ++? - PullRequest
3 голосов
/ 10 июня 2010

Я видел это в нескольких местах, и чтобы подтвердить, что я не сошел с ума, я искал другие примеры .По-видимому, это может происходить и в других вариантах, например, operator+ <>.

Однако, нигде я не видел ничего такого, что бы упоминало, что это такое, поэтому я решил спросить.проще всего гуглить operator<< <>(: -)

1 Ответ

13 голосов
/ 10 июня 2010

<> после имени функции (включая оператор, такой как 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<< <> не является оператором.

...