LINUX.ORG.RU

void Function(const std::string& instr="wer") 
{ 
  //Небольшой ахтунг
  std::string& str= const_cast<std::string&>(instr);
  return; 
} 

В грядущем стандарте есть неконстантные ссылки на временные объекты: &&

Можно заюзать функциональный объект:

class Func
{
public:
        void operator ()(std::string& instr= str)
        {
        }
private:
        static std::string str;
};

Booster ★★
()
Ответ на: комментарий от one_more_hokum

Что ещё подсказать? В текущем стандарте неконстантная ссылка не может инициализироваться временным объектом. Либо ссылаться на не временный объект либо кастить.

Booster ★★
()
Ответ на: комментарий от Booster

> Можно заюзать функциональный объект

Ага, спасибо, сработало. Но это феерическое извращение, конечно, хоть и выглядит! :-D

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от Booster

А не проще использовать перегрузку функций?

void function(std::string& ref)
{
    // ...
}

void function()
{
    std::string tmp("...");
    function(tmp);
}

nozh
()
Ответ на: комментарий от Booster

В текущем стандарте неконстантная ссылка не может инициализироваться временным объектом. Либо ссылаться на не временный объект либо кастить.

int& a = a;
int& b = b;
a = b;
lester ★★★★
()
Ответ на: комментарий от Booster

просто указал, что кроме «ссылаться на не временный объект либо кастить», есть очевидный третий вариант - инициализировать ссылку ссылкой

lester ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.