Почему я не могу использовать оператор bool() для std::ofstreamC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему я не могу использовать оператор bool() для std::ofstream

Сообщение Anonymous »

Почему я не могу написать следующий код?

Код: Выделить всё

#include 
#include 

bool touch(const std::string& file_path)
{
return std::ofstream(file_path, std::ios_base::app);
}

int main()
{
touch("foo.txt");
}
Вывод

Код: Выделить всё

prog.cpp: In function 'bool touch(const string&)':
prog.cpp:6:52: error: cannot convert 'std::ofstream {aka std::basic_ofstream}' to 'bool' in return
return std::ofstream(file_path, std::ios_base::app);
http://ideone.com/IhaRaD

Я знаю, что оператор bool() в std::fstream определен как явный, но я не вижу причин, по которым в таком случае он должен потерпеть неудачу. Никакого промежуточного преобразования нет, только временный объект std::ofstream и bool. В чем причина?

Подробнее здесь: https://stackoverflow.com/questions/392 ... tdofstream
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»