Форум программистов, компьютерный форум CyberForum.ru

Обёртка для потока вывода - C++

Восстановить пароль Регистрация
 
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
08.12.2012, 13:47     Обёртка для потока вывода #1
В С++11 в потоках появился move constructor. Как бы написать класс, который можно одновременно конструировать из ссылки и с помощью временного объекта? Примерный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <fstream>
#include <utility>
 
 
// inserts stuff in std::ofstream
struct writer {
 
   std::ofstream & ostream() const noexcept {
      return ???;
   }
 
 
   template<typename Type>
   void put(Type const& value) const {
      ostream() << value;
   }
 
 
   // construct from lvalue
   explicit writer(std::ofstream & ostr) noexcept
         : holder(ostr) {}
 
   // construct from rvalue
   explicit writer(std::ofstream && ostr) noexcept
         : holder(std::move(ostr)) {}
 
 
private:
   typedef ???      holder_type;
 
   holder_type      holder;
};
 
 
int main() {
   std::ofstream ofs("lvalue");
   
   // construct from lvalue
   writer(ofs).put("lvalue");
 
   // construct from rvalue
   writer(std::ofstream("rvalue")).put("rvalue");
}
Вообще вопрос чисто интереса ради, т.к. такой класс писать не собираюсь (получается, что writer может как владеть объектом потока, так и нет).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 13:47     Обёртка для потока вывода
Посмотрите здесь:

Переключение файлового потока ввода вывода C++
C++ Перегрузка ввода/вывода в/из потока
Обёртка над Variable arguments C++
перенаправление потока вывода C++
Перевод потока из файлового ввода/вывода в консольный ввод/вывод C++
Юникод и выход из потока вывода C++
C++ Согласовать два потока для вывода номера по порядку
Своя обёртка над std::string C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru