为什么我可以使用rdbuf()从const istream构造istreambuf_iterator?

时间:2020-02-16 21:42:20

标签: c++ constants iostream

由于某些原因,这是不允许的:

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 {{1 }}。取决于算作“ const突变”的原因,istream是否非istreamrdbuf()都不应该使用const

0 个答案:

没有答案
相关问题