C++, сломай мозг
2/2/06 15:44Подарки от Вовы Мутеля - этот и следующий пост. Отсюда.
Задача - дана программа:
Вопрос: почему первый const char* распечатывается как указатель, а не так, как надо?
Я пока не смог.
Вове ответил некий истинный гуру из Apple.
Задача - дана программа:
#include <iostream>
#include <sstream>
using namespace std;
#define SFORMAT(e) ((dynamic_cast<const ostringstream&>(ostringstream() << e)).str())
int main(int argc, char* argv[])
{
cout << SFORMAT("2 x " << " 2 = " << 2*2);
return 0;
}
Никто не спрашивает, что распечатается в результате. Если вы можете это сказать, то вы не Страуструп - вы Господь Бог.Вопрос: почему первый const char* распечатывается как указатель, а не так, как надо?
Я пока не смог.
Вове ответил некий истинный гуру из Apple.
Tags:
(no subject)
2/2/06 08:25 (UTC)первый параметр выводится в
_Myt& std::basic_ostream::operator<<(const void *_Val).
второй - уже в
template inline
basic_ostream
первый параметр выводится в
_Myt& std::basic_ostream::operator<<(const void *_Val).
второй - уже в
template<class _Traits> inline
basic_ostream<char, _Traits>& __cdecl std::operator<<(
basic_ostream<char, _Traits>& _Ostr,
const char *_Val)
почему-то неправильно(?) разрешается перегрузка.