由于某些原因,这是不允许的:
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
是否非istream
或rdbuf()
都不应该使用const
?