fork download
  1. #include <fstream>
  2. #include <initializer_list>
  3.  
  4. using namespace std;
  5.  
  6. void writeSomething(initializer_list<ofstream&> args) {
  7. for (auto f : args )
  8. f << "hello" << endl;
  9. }
  10.  
  11. int main() {
  12. ofstream outputFile("data_1.txt");
  13. writeSomething({outputFile});
  14. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
In file included from /usr/include/c++/4.8/bits/basic_string.h:42:0,
                 from /usr/include/c++/4.8/string:52,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/initializer_list: In instantiation of ‘class std::initializer_list<std::basic_ofstream<char>&>’:
prog.cpp:6:53:   required from here
/usr/include/c++/4.8/initializer_list:54:26: error: forming pointer to reference type ‘std::basic_ofstream<char>&’
       typedef const _E*  iterator;
                          ^
/usr/include/c++/4.8/initializer_list:55:26: error: forming pointer to reference type ‘std::basic_ofstream<char>&’
       typedef const _E*  const_iterator;
                          ^
prog.cpp: In function ‘void writeSomething(std::initializer_list<std::basic_ofstream<char>&>)’:
prog.cpp:7:19: error: no matching function for call to ‘begin(std::initializer_list<std::basic_ofstream<char>&>&)’
     for (auto f : args )
                   ^
prog.cpp:7:19: note: candidates are:
In file included from /usr/include/c++/4.8/bits/basic_string.h:42:0,
                 from /usr/include/c++/4.8/string:52,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/initializer_list:89:5: note: template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)
     begin(initializer_list<_Tp> __ils) noexcept
     ^
/usr/include/c++/4.8/initializer_list:89:5: note:   template argument deduction/substitution failed:
/usr/include/c++/4.8/initializer_list: In substitution of ‘template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>) [with _Tp = std::basic_ofstream<char>&]’:
prog.cpp:7:19:   required from here
/usr/include/c++/4.8/initializer_list:89:5: error: forming pointer to reference type ‘std::basic_ofstream<char>&’
In file included from /usr/include/c++/4.8/string:51:0,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/range_access.h:87:5: note: template<class _Tp, unsigned int _Nm> _Tp* std::begin(_Tp (&)[_Nm])
     begin(_Tp (&__arr)[_Nm])
     ^
/usr/include/c++/4.8/bits/range_access.h:87:5: note:   template argument deduction/substitution failed:
prog.cpp:7:19: note:   mismatched types ‘_Tp [_Nm]’ and ‘std::initializer_list<std::basic_ofstream<char>&>’
     for (auto f : args )
                   ^
In file included from /usr/include/c++/4.8/string:51:0,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/range_access.h:58:5: note: template<class _Container> decltype (__cont.begin()) std::begin(const _Container&)
     begin(const _Container& __cont) -> decltype(__cont.begin())
     ^
/usr/include/c++/4.8/bits/range_access.h:58:5: note:   template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.begin()) std::begin(const _Container&) [with _Container = std::initializer_list<std::basic_ofstream<char>&>]’:
prog.cpp:7:19:   required from here
/usr/include/c++/4.8/bits/range_access.h:58:5: error: ‘const class std::initializer_list<std::basic_ofstream<char>&>’ has no member named ‘begin’
/usr/include/c++/4.8/bits/range_access.h:48:5: note: template<class _Container> decltype (__cont.begin()) std::begin(_Container&)
     begin(_Container& __cont) -> decltype(__cont.begin())
     ^
/usr/include/c++/4.8/bits/range_access.h:48:5: note:   template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.begin()) std::begin(_Container&) [with _Container = std::initializer_list<std::basic_ofstream<char>&>]’:
prog.cpp:7:19:   required from here
/usr/include/c++/4.8/bits/range_access.h:48:5: error: ‘class std::initializer_list<std::basic_ofstream<char>&>’ has no member named ‘begin’
prog.cpp:7:19: error: no matching function for call to ‘end(std::initializer_list<std::basic_ofstream<char>&>&)’
     for (auto f : args )
                   ^
prog.cpp:7:19: note: candidates are:
In file included from /usr/include/c++/4.8/bits/basic_string.h:42:0,
                 from /usr/include/c++/4.8/string:52,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/initializer_list:99:5: note: template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)
     end(initializer_list<_Tp> __ils) noexcept
     ^
/usr/include/c++/4.8/initializer_list:99:5: note:   template argument deduction/substitution failed:
/usr/include/c++/4.8/initializer_list: In substitution of ‘template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>) [with _Tp = std::basic_ofstream<char>&]’:
prog.cpp:7:19:   required from here
/usr/include/c++/4.8/initializer_list:99:5: error: forming pointer to reference type ‘std::basic_ofstream<char>&’
In file included from /usr/include/c++/4.8/string:51:0,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/range_access.h:97:5: note: template<class _Tp, unsigned int _Nm> _Tp* std::end(_Tp (&)[_Nm])
     end(_Tp (&__arr)[_Nm])
     ^
/usr/include/c++/4.8/bits/range_access.h:97:5: note:   template argument deduction/substitution failed:
prog.cpp:7:19: note:   mismatched types ‘_Tp [_Nm]’ and ‘std::initializer_list<std::basic_ofstream<char>&>’
     for (auto f : args )
                   ^
In file included from /usr/include/c++/4.8/string:51:0,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/fstream:38,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/range_access.h:78:5: note: template<class _Container> decltype (__cont.end()) std::end(const _Container&)
     end(const _Container& __cont) -> decltype(__cont.end())
     ^
/usr/include/c++/4.8/bits/range_access.h:78:5: note:   template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.end()) std::end(const _Container&) [with _Container = std::initializer_list<std::basic_ofstream<char>&>]’:
prog.cpp:7:19:   required from here
/usr/include/c++/4.8/bits/range_access.h:78:5: error: ‘const class std::initializer_list<std::basic_ofstream<char>&>’ has no member named ‘end’
/usr/include/c++/4.8/bits/range_access.h:68:5: note: template<class _Container> decltype (__cont.end()) std::end(_Container&)
     end(_Container& __cont) -> decltype(__cont.end())
     ^
/usr/include/c++/4.8/bits/range_access.h:68:5: note:   template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.end()) std::end(_Container&) [with _Container = std::initializer_list<std::basic_ofstream<char>&>]’:
prog.cpp:7:19:   required from here
/usr/include/c++/4.8/bits/range_access.h:68:5: error: ‘class std::initializer_list<std::basic_ofstream<char>&>’ has no member named ‘end’
prog.cpp: In function ‘int main()’:
prog.cpp:13:32: error: ‘const’ qualifiers cannot be applied to ‘std::basic_ofstream<char>&’
     writeSomething({outputFile});
                                ^
prog.cpp:13: confused by earlier errors, bailing out
Preprocessed source stored into /home/2cXuj0/ccY5FbuT.out file, please attach this to your bugreport.
stdout
Standard output is empty