什么是运算符<< <>在 C++ 中?

发布于 2024-09-05 05:13:56 字数 329 浏览 6 评论 0 原文

我在一些地方看到过这种情况,为了确认我没有疯,我 寻找其他示例。显然这也可以有其他风格,例如 operator+ <>

但是,我在任何地方都没有看到它是什么,所以我想我应该问一下

operator<<>( 代码>:-)

I have seen this in a few places, and to confirm I wasn't crazy, I looked for other examples. Apparently this can come in other flavors as well, eg operator+ <>.

However, nothing I have seen anywhere mentions what it is, so I thought I'd ask.

It's not the easiest thing to google operator<< <>( :-)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时间你老了 2024-09-12 05:13:59

声明中函数名称(包括运算符,如 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<< <> 不是运算符。

<> after a function name (including an operator, like operator<<) in a declaration indicates that it is a function template specialization. For example, with an ordinary function template:

template <typename T>
void f(T x) { }

template<>
void f<>(int x) { } // specialization for T = int

(note that the angle brackets might have template arguments listed in them, depending on how the function template is specialized)

<> can also be used after a function name when calling a function to explicitly call a function template when there is a non-template function that would ordinarily be a better match in overload resolution:

template <typename T> 
void g(T x) { }   // (1)

void g(int x) { } // (2)

g(42);   // calls (2)
g<>(42); // calls (1)

So, operator<< <> isn't an operator.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文