gpt4 book ai didi

c++ - 获取 ostream 的插入运算符

转载 作者:行者123 更新时间:2023-11-30 01:02:09 24 4
gpt4 key购买 nike

我有一个类,我想包装一个 ostringstream .我已经这样做了:

class Foo {
ostringstream os;
public:
template <typename T>
decltype(ostream() << T(), Foo)& operator <<(const T& param) {
os << param;
return *this;
}
}

我的意图是为 ostream 定义任何运算符免费。但是我遇到了编译错误:

error C2893: Failed to specialize function template unknown-type &Foo::operator <<(const T &)

我使用的是 decltype 吗?错误还是什么?

最佳答案

std::ostream 没有默认构造函数,Foo 不是可以在 decltype 中使用的表达式。相反,您可以在第一个表达式中直接使用 os。为了更轻松地返回 Foo&,我将使用尾随返回类型并使用 *this

template <typename T>
auto operator<<(const T& param) -> decltype(os << param, *this);

关于c++ - 获取 ostream 的插入运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675021/

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