Re: std::ostringstream misunderstanding
On 22 Mrz., 15:21, "petek1976" <pete.karou...@earthlink.net> wrote:
The part that has me the most confused is that the C++ standard
(27.6.2.5.4) says operator<<(const char*) is a member function. The
point of confusion for me ultimately was in the fact that libstdc++
violates the standard in this respect by making operator<<(const
char*) a non-member function and therefore causing the strange
behavior.
By this violation it appears libstdc++ has a defect it in.
If libstdc++ has done so, it precisely follows the standard. In
27.6.2.5.4 nothing is said, that would allow any library to provide
const char* inserters as member functions. The relevant declarations
in the current standard 14882-2003 are free function templates:
template<class charT, class traits>
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&
out, const charT* s);
template<class charT, class traits>
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&
out, const char* s);
template<class traits>
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&
out, const char* s);
These declarations exactly match those from the basic_ostream synopsis
in 27.6.2.1.
Greetings from Bremen,
Daniel Kr?gler
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]