singalen: (2002)
[personal profile] singalen
Подарки от Вовы Мутеля - этот и следующий пост. Отсюда.
Задача - дана программа:
#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.

Re: Reply to your comment...

2/2/06 08:54 (UTC)
Posted by [identity profile] dottedmag.livejournal.com
Аргумент оператора вне класса - C& - некостантная ссылка, так что
привязать к ней rvalue C() нельзя. Раз так, то эта функция не
выбирается в качестве варианта для перегрузки.