istringstream.rdbuf with custom streambuf does not compile
杨岑
ssawgift@163.com
Fri May 6 13:59:00 GMT 2016
Sorry for my bad English. I meant 'intimidated' when I wrote 'intimated'.
As I understand how inheritance works for istringstream, I conclude that:
1. typedef basic_istringstream<char> istringstream;
2. basic_istringstream: public basic_istream: virtual public basic_ios
3.basic_io defines both rdbuf() const and
basic_streambuf<_CharT, _Traits>*
rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
And, most importantly, both of rdbuf's are public methods.
So my understanding is that istringstream should have a public visible
rdbuf(streambuf*) method which the compiler should be able to resolve.
But, I am not quite confident about the above reasoning. Am I wrong or not?
å¨ 2016/5/6 21:02, lh_mouse åé:
> The member function 'basic_streambuf<charT,traits>* rdbuf(basic_streambuf<charT,traits>* sb)' of class template basic_ios is hidden *intentionally*.
>
> ISO/IEC WG21 (Working Draft, Standard for Programming Language C++) N4582:
> [quote]
> 27.8 String-based streams [string.streams]
> 27.8.3 Class template basic_istringstream [istringstream]
> namespace std {
> template <class charT, class traits = char_traits<charT>,
> class Allocator = allocator<charT> >
> class basic_istringstream : public basic_istream<charT,traits> {
> public:
> (... omitted ...)
> // 27.8.3.3 Members:
> basic_stringbuf<charT,traits,Allocator>* rdbuf() const;
> (... omitted ...)
> };
> [/quote]
>
> The function taking no parameters is the only overload required by the standard. It isn't a GCC bug.
>
> ------------------
> Best regards,
> lh_mouse
> 2016-05-06
>
More information about the Gcc-help
mailing list