gpt4 book ai didi

c++ - 为全局模板化运算符指定模板参数的正确语法?

转载 作者:行者123 更新时间:2023-11-30 01:40:47 25 4
gpt4 key购买 nike

对于这个微不足道的问题,我深表歉意,但我尝试了几次谷歌都无法解决这个问题,所以决定在这里提问。在这种情况下指定模板参数的正确方法是什么:

#include <sstream>

struct bar
{
int foo = 5;
};

template<size_t i>
std::ostream& operator<<(std::ostream& s, bar b)
{
s << b.foo + i;
return s;
}

int main(int argc, char** argv)
{
std::stringstream s;
bar b;
// Proper way of writing s << bar ?
return 0;
}

最佳答案

你被迫使用长形式调用运算符,并显式传递模板参数

int main()
{
std::stringstream s;
bar b;
::operator<<<1>(s, b);
return 0;
}

Demo

::operator<<<1>(s, b);语法看起来很奇怪,但请关注 ::operator<<部分,它引用全局命名空间中的运算符。由于您已将其编写为模板,并且无法从参数中推断出模板参数 ( size_t ),因此您不得不使用 <1> 形式的显式模板参数。 ( <2><3> 等)

关于c++ - 为全局模板化运算符指定模板参数的正确语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42635399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com