gpt4 book ai didi

c++ - 当 operator<<() 失败时回退到 to_string()

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:56 26 4
gpt4 key购买 nike

我见过有对应 to_string() 的类型函数,但没有重载 operator<<() .因此,当插入流时,必须 << to_string(x)这是冗长的。我想知道是否可以编写用户 operator<<() 的通用函数如果支持并返回到 << to_string()如果没有。

最佳答案

SFINAE 有点矫枉过正,使用 ADL。

诀窍是确保一个 operator<<是可用的,不一定是类型定义提供的那个:

namespace helper {
template<typename T> std::ostream& operator<<(std::ostream& os, T const& t)
{
return os << to_string(t);
}
}
using helper::operator<<;
std::cout << myFoo;

这个技巧常用于需要在std::swap<T>之间进行选择的泛型代码和一个专门的Foo::swap(Foo::Bar&, Foo::Bar&) .

关于c++ - 当 operator<<() 失败时回退到 to_string(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940754/

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