提问人:Artikash-Reinstate Monica 提问时间:2/17/2020 最后编辑:Artikash-Reinstate Monica 更新时间:2/18/2020 访问量:192
为什么我可以使用 rdbuf() 从 const istream 构造一个istreambuf_iterator?
Why can I construct a istreambuf_iterator from a const istream using rdbuf()?
问:
出于某种原因,这是不允许的:
void foo(const std::istream& bar) { std::istreambuf_iterator<char> baz(bar); }
但这是允许的:
void foo(const std::istream& bar) { std::istreambuf_iterator<char> baz(bar.rdbuf()); }
void foo(std::istream&& bar) { std::istreambuf_iterator<char> baz(bar); }
似乎是一个奇怪的设计选择。它所做的只是操纵 ,其访问是 ,但你只能从非 .根据什么算作“突变”,不应该是非-或采取?istreambuf_iterator
rdbuf()
const
istreambuf_iterator
const
istream
istream
rdbuf()
const
istreambuf_iterator
const istream
答: 暂无答案
评论
istream
istream
const
const
rdbuf
const
const