CS253: Software Development with C++

Spring 2021

Syntax Errors

Show Lecture.SyntaxErrors as a slide show.

CS253 Syntax Errors


KEEP

CALM and FIND SYNTAX ERRORS

Syntax errors

Interpreting compiler syntax errors can take a bit of practice.

My algorithm:

  1. Note the line number in the error message.
  2. Look at that line in the source code.
  3. If that solved the problem, great, we’re done.
  4. Otherwise, read the entire error message. Like, actually, totally, literally all of it.

Options

By default, without -Wfatal-errors, g++ will provide all manner of helpful suggestions:

vector<int> v;
cout << v;
c.cc:2: error: no match for 'operator<<' in 'std::cout << v' (operand types are 
   'std::ostream' {aka 'std::basic_ostream<char>'} and 'std::vector<int>')
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:108: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& 
   (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = 
   char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, 
   _Traits>::__ostream_type = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:108: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'std::basic_ostream<char>::__ostream_type& 
   (*)(std::basic_ostream<char>::__ostream_type&)' {aka 
   'std::basic_ostream<char>& (*)(std::basic_ostream<char>&)'}
/usr/include/c++/8/ostream:117: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& 
   (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; 
   _Traits = std::char_traits<char>; std::basic_ostream<_CharT, 
   _Traits>::__ostream_type = std::basic_ostream<char>; 
   std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]'
/usr/include/c++/8/ostream:117: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'std::basic_ostream<char>::__ios_type& 
   (*)(std::basic_ostream<char>::__ios_type&)' {aka 'std::basic_ios<char>& 
   (*)(std::basic_ios<char>&)'}
/usr/include/c++/8/ostream:127: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = 
   char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, 
   _Traits>::__ostream_type = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:127: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'std::ios_base& (*)(std::ios_base&)'
/usr/include/c++/8/ostream:166: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long int) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:166: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'long int'
/usr/include/c++/8/ostream:170: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long unsigned int) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:170: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'long unsigned int'
/usr/include/c++/8/ostream:174: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(bool) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:174: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'bool'
In file included from /usr/include/c++/8/ostream:696,
                 from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/bits/ostream.tcc:91: note: candidate: 
   'std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(short int) [with _CharT = char; _Traits = 
   std::char_traits<char>]'
/usr/include/c++/8/bits/ostream.tcc:91: note:   no known conversion for 
   argument 1 from 'std::vector<int>' to 'short int'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:181: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(short unsigned int) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:181: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'short unsigned int'
In file included from /usr/include/c++/8/ostream:696,
                 from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/bits/ostream.tcc:105: note: candidate: 
   'std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(int) [with _CharT = char; _Traits = 
   std::char_traits<char>]'
/usr/include/c++/8/bits/ostream.tcc:105: note:   no known conversion for 
   argument 1 from 'std::vector<int>' to 'int'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:192: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(unsigned int) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:192: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'unsigned int'
/usr/include/c++/8/ostream:201: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long long int) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:201: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'long long int'
/usr/include/c++/8/ostream:205: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long long unsigned int) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:205: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'long long unsigned int'
/usr/include/c++/8/ostream:220: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(double) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:220: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'double'
/usr/include/c++/8/ostream:224: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(float) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:224: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'float'
/usr/include/c++/8/ostream:232: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long double) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:232: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'long double'
/usr/include/c++/8/ostream:245: note: candidate: 'std::basic_ostream<_CharT, 
   _Traits>::__ostream_type& std::basic_ostream<_CharT, 
   _Traits>::operator<<(const void*) [with _CharT = char; _Traits = 
   std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type 
   = std::basic_ostream<char>]'
/usr/include/c++/8/ostream:245: note:   no known conversion for argument 1 from 
   'std::vector<int>' to 'const void*'
In file included from /usr/include/c++/8/ostream:696,
                 from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/bits/ostream.tcc:119: note: candidate: 
   'std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) 
   [with _CharT = char; _Traits = std::char_traits<char>; 
   std::basic_ostream<_CharT, _Traits>::__streambuf_type = 
   std::basic_streambuf<char>]'
/usr/include/c++/8/bits/ostream.tcc:119: note:   no known conversion for 
   argument 1 from 'std::vector<int>' to 
   'std::basic_ostream<char>::__streambuf_type*' {aka 
   'std::basic_streambuf<char>*'}
In file included from /usr/include/c++/8/regex:62,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:110,
                 from c.cc:4:
/usr/include/c++/8/bits/regex.h:1523: note: candidate: 'template<class 
   _Ch_type, class _Ch_traits, class _Bi_iter> std::basic_ostream<_CharT, 
   _Traits>& std::__cxx11::operator<<(std::basic_ostream<_CharT, _Traits>&, 
   const std::__cxx11::sub_match<_Bi_iter>&)'
/usr/include/c++/8/bits/regex.h:1523: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::__cxx11::sub_match<_Bi_iter>'
In file included from /usr/include/c++/8/bits/basic_string.h:48,
                 from /usr/include/c++/8/string:52,
                 from c.cc:1:
/usr/include/c++/8/string_view:545: note: candidate: 'template<class _CharT, 
   class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, 
   std::basic_string_view<_CharT, _Traits>)'
/usr/include/c++/8/string_view:545: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 
   'std::basic_string_view<_CharT, _Traits>'
In file included from /usr/include/c++/8/string:52,
                 from c.cc:1:
/usr/include/c++/8/bits/basic_string.h:6323: note: candidate: 'template<class 
   _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
/usr/include/c++/8/bits/basic_string.h:6323: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
In file included from /usr/include/c++/8/bits/ios_base.h:46,
                 from /usr/include/c++/8/ios:42,
                 from c.cc:2:
/usr/include/c++/8/system_error:217: note: candidate: 'template<class _CharT, 
   class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::error_code&)'
/usr/include/c++/8/system_error:217: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'const 
   std::error_code&'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:500: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT)'
/usr/include/c++/8/ostream:500: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   deduced conflicting types for parameter '_CharT' ('char' and 
   'std::vector<int>')
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:505: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, char)'
/usr/include/c++/8/ostream:505: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'char'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:511: note: candidate: 'template<class _Traits> 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, char)'
/usr/include/c++/8/ostream:511: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'char'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:517: note: candidate: 'template<class _Traits> 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, signed char)'
/usr/include/c++/8/ostream:517: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'signed 
   char'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:522: note: candidate: 'template<class _Traits> 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, unsigned char)'
/usr/include/c++/8/ostream:522: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'unsigned 
   char'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:542: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*)'
/usr/include/c++/8/ostream:542: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   mismatched types 'const _CharT*' and 'std::vector<int>'
In file included from /usr/include/c++/8/ostream:696,
                 from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/bits/ostream.tcc:321: note: candidate: 'template<class 
   _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*)'
/usr/include/c++/8/bits/ostream.tcc:321: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'const 
   char*'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:559: note: candidate: 'template<class _Traits> 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, const char*)'
/usr/include/c++/8/ostream:559: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'const 
   char*'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:572: note: candidate: 'template<class _Traits> 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, const signed char*)'
/usr/include/c++/8/ostream:572: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'const 
   signed char*'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:577: note: candidate: 'template<class _Traits> 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, const unsigned char*)'
/usr/include/c++/8/ostream:577: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'const 
   unsigned char*'
In file included from /usr/include/c++/8/iostream:39,
                 from c.cc:3:
/usr/include/c++/8/ostream:685: note: candidate: 'template<class _Ostream, 
   class _Tp> typename 
   std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, 
   std::__is_convertible_to_basic_ostream<_Ostream>, 
   std::__is_insertable<typename 
   std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, 
   void> >::value, typename 
   std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type 
   std::operator<<(_Ostream&&, const _Tp&)'
/usr/include/c++/8/ostream:685: note:   template argument 
   deduction/substitution failed:
/usr/include/c++/8/ostream: In substitution of 'template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type std::operator<<(_Ostream&&, const _Tp&) [with _Ostream = std::basic_ostream<char>&; _Tp = std::vector<int>]':
c.cc:2:   required from here
/usr/include/c++/8/ostream:685: error: no type named 'type' in 'struct 
   std::enable_if<false, std::basic_ostream<char>&>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:45,
                 from c.cc:4:
/usr/include/c++/8/cstddef:124: note: candidate: 'template<class _IntegerType> 
   constexpr std::__byte_op_t<_IntegerType> std::operator<<(std::byte, 
   _IntegerType)'
/usr/include/c++/8/cstddef:124: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'std::cout' (type 'std::ostream' {aka 
   'std::basic_ostream<char>'}) to type 'std::byte'
In file included from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:52,
                 from c.cc:4:
/usr/include/c++/8/complex:547: note: candidate: 'template<class _Tp, class 
   _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::complex<_Tp>&)'
/usr/include/c++/8/complex:547: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::complex<_Tp>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:66,
                 from c.cc:4:
/usr/include/c++/8/bitset:1534: note: candidate: 'template<class _CharT, class 
   _Traits, long unsigned int _Nb> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::bitset<_Nb>&)'
/usr/include/c++/8/bitset:1534: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const std::bitset<_Nb>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:79: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::_Resetiosflags)'
/usr/include/c++/8/iomanip:79: note:   template argument deduction/substitution 
   failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 
   'std::_Resetiosflags'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:109: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::_Setiosflags)'
/usr/include/c++/8/iomanip:109: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 
   'std::_Setiosflags'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:143: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::_Setbase)'
/usr/include/c++/8/iomanip:143: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 
   'std::_Setbase'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:178: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, 
   std::_Setfill<_CharT>)'
/usr/include/c++/8/iomanip:178: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'std::_Setfill<_CharT>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:208: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::_Setprecision)'
/usr/include/c++/8/iomanip:208: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 
   'std::_Setprecision'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:238: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::_Setw)'
/usr/include/c++/8/iomanip:238: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 
   'std::_Setw'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:311: note: candidate: 'template<class _CharT, class 
   _Traits, class _MoneyT> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, 
   std::_Put_money<_MoneyT>)'
/usr/include/c++/8/iomanip:311: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 
   'std::_Put_money<_MoneyT>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:72,
                 from c.cc:4:
/usr/include/c++/8/iomanip:363: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, 
   std::_Put_time<_CharT>)'
/usr/include/c++/8/iomanip:363: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'std::_Put_time<_CharT>'
In file included from /usr/include/c++/8/memory:81,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:82,
                 from c.cc:4:
/usr/include/c++/8/bits/shared_ptr.h:66: note: candidate: 'template<class _Ch, 
   class _Tr, class _Tp, __gnu_cxx::_Lock_policy _Lp> 
   std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::__shared_ptr<_Tp, _Lp>&)'
/usr/include/c++/8/bits/shared_ptr.h:66: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::__shared_ptr<_Tp, _Lp>'
In file included from /usr/include/c++/8/valarray:592,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/bits/valarray_after.h:410: note: candidate: 'template<class 
   _Dom1, class _Dom2> std::_Expr<std::_BinClos<std::__shift_left, std::_Expr, 
   std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__shift_left, typename 
   _Dom1::value_type>::result_type> std::operator<<(const std::_Expr<_Dom1, 
   typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename 
   _Dom2::value_type>&)'
/usr/include/c++/8/bits/valarray_after.h:410: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::ostream' {aka 'std::basic_ostream<char>'} is not derived 
   from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
In file included from /usr/include/c++/8/valarray:592,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/bits/valarray_after.h:410: note: candidate: 'template<class 
   _Dom> std::_Expr<std::_BinClos<std::__shift_left, std::_Expr, 
   std::_Constant, _Dom, typename _Dom::value_type>, typename 
   std::__fun<std::__shift_left, typename _Dom1::value_type>::result_type> 
   std::operator<<(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const 
   typename _Dom::value_type&)'
/usr/include/c++/8/bits/valarray_after.h:410: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::ostream' {aka 'std::basic_ostream<char>'} is not derived 
   from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
In file included from /usr/include/c++/8/valarray:592,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/bits/valarray_after.h:410: note: candidate: 'template<class 
   _Dom> std::_Expr<std::_BinClos<std::__shift_left, std::_Constant, 
   std::_Expr, typename _Dom::value_type, _Dom>, typename 
   std::__fun<std::__shift_left, typename _Dom1::value_type>::result_type> 
   std::operator<<(const typename _Dom::value_type&, const std::_Expr<_Dom1, 
   typename _Dom1::value_type>&)'
/usr/include/c++/8/bits/valarray_after.h:410: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const std::_Expr<_Dom1, 
   typename _Dom1::value_type>'
In file included from /usr/include/c++/8/valarray:592,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/bits/valarray_after.h:410: note: candidate: 'template<class 
   _Dom> std::_Expr<std::_BinClos<std::__shift_left, std::_Expr, 
   std::_ValArray, _Dom, typename _Dom::value_type>, typename 
   std::__fun<std::__shift_left, typename _Dom1::value_type>::result_type> 
   std::operator<<(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const 
   std::valarray<typename _Dom::value_type>&)'
/usr/include/c++/8/bits/valarray_after.h:410: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::ostream' {aka 'std::basic_ostream<char>'} is not derived 
   from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
In file included from /usr/include/c++/8/valarray:592,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/bits/valarray_after.h:410: note: candidate: 'template<class 
   _Dom> std::_Expr<std::_BinClos<std::__shift_left, std::_ValArray, 
   std::_Expr, typename _Dom::value_type, _Dom>, typename 
   std::__fun<std::__shift_left, typename _Dom1::value_type>::result_type> 
   std::operator<<(const std::valarray<typename _Dom::value_type>&, const 
   std::_Expr<_Dom1, typename _Dom1::value_type>&)'
/usr/include/c++/8/bits/valarray_after.h:410: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const std::_Expr<_Dom1, 
   typename _Dom1::value_type>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/valarray:1180: note: candidate: 'template<class _Tp> 
   std::_Expr<std::_BinClos<std::__shift_left, std::_ValArray, std::_ValArray, 
   _Tp, _Tp>, typename std::__fun<std::__shift_left, _Tp>::result_type> 
   std::operator<<(const std::valarray<_Tp>&, const std::valarray<_Tp>&)'
/usr/include/c++/8/valarray:1180: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::ostream' {aka 'std::basic_ostream<char>'} is not derived 
   from 'const std::valarray<_Tp>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/valarray:1180: note: candidate: 'template<class _Tp> 
   std::_Expr<std::_BinClos<std::__shift_left, std::_ValArray, std::_Constant, 
   _Tp, _Tp>, typename std::__fun<std::__shift_left, _Tp>::result_type> 
   std::operator<<(const std::valarray<_Tp>&, const _Tp&)'
/usr/include/c++/8/valarray:1180: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::ostream' {aka 'std::basic_ostream<char>'} is not derived 
   from 'const std::valarray<_Tp>'
In file included from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:95,
                 from c.cc:4:
/usr/include/c++/8/valarray:1180: note: candidate: 'template<class _Tp> 
   std::_Expr<std::_BinClos<std::__shift_left, std::_Constant, std::_ValArray, 
   _Tp, _Tp>, typename std::__fun<std::__shift_left, _Tp>::result_type> 
   std::operator<<(const _Tp&, const std::valarray<_Tp>&)'
/usr/include/c++/8/valarray:1180: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::valarray<_Tp>'
In file included from /usr/include/c++/8/future:39,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:105,
                 from c.cc:4:
/usr/include/c++/8/thread:323: note: candidate: 'template<class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::thread::id)'
/usr/include/c++/8/thread:323: note:   template argument deduction/substitution 
   failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 
   'std::thread::id'
In file included from /usr/include/c++/8/random:49,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.h:1262: note: candidate: 'template<class 
   _RandomNumberEngine, long unsigned int __w, class _UIntType, class _CharT, 
   class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::independent_bits_engine<_RandomNumberEngine, __w, _UIntType>&)'
/usr/include/c++/8/bits/random.h:1262: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::independent_bits_engine<_RandomNumberEngine, __w, _UIntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:874: note: candidate: 'template<class 
   _IntType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::uniform_int_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:874: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::uniform_int_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:933: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::uniform_real_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:933: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::uniform_real_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2126: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::cauchy_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2126: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::cauchy_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:995: note: candidate: 'template<class 
   _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::bernoulli_distribution&)'
/usr/include/c++/8/bits/random.tcc:995: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   cannot convert 'v' (type 'std::vector<int>') to type 'const 
   std::bernoulli_distribution&'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1077: note: candidate: 'template<class 
   _IntType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::geometric_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:1077: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::geometric_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1734: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::exponential_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:1734: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::exponential_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2525: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::weibull_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2525: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::weibull_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2601: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::extreme_value_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2601: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::extreme_value_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:153: note: candidate: 'template<class 
   _UIntType, _UIntType __a, _UIntType __c, _UIntType __m, class _CharT, class 
   _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::linear_congruential_engine<_UIntType, __a, __c, __m>&)'
/usr/include/c++/8/bits/random.tcc:153: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::linear_congruential_engine<_UIntType, __a, __c, __m>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:474: note: candidate: 'template<class 
   _UIntType1, long unsigned int __w1, long unsigned int __n1, long unsigned 
   int __m1, long unsigned int __r1, _UIntType1 __a1, long unsigned int __u1, 
   _UIntType1 __d1, long unsigned int __s1, _UIntType1 __b1, long unsigned int 
   __t1, _UIntType1 __c1, long unsigned int __l1, _UIntType1 __f1, class 
   _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 
   __s, __b, __t, __c, __l, __f>&)'
/usr/include/c++/8/bits/random.tcc:474: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 
   __s, __b, __t, __c, __l, __f>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:629: note: candidate: 'template<class 
   _UIntType, long unsigned int __w, long unsigned int __s, long unsigned int 
   __r, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::subtract_with_carry_engine<_UIntType, __w, __s, __r>&)'
/usr/include/c++/8/bits/random.tcc:629: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::subtract_with_carry_engine<_UIntType, __w, __s, __r>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:699: note: candidate: 'template<class 
   _RandomNumberEngine, long unsigned int __p, long unsigned int __r, class 
   _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::discard_block_engine<_RandomNumberEngine, __p, __r>&)'
/usr/include/c++/8/bits/random.tcc:699: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::discard_block_engine<_RandomNumberEngine, __p, __r>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:828: note: candidate: 'template<class 
   _RandomNumberEngine, long unsigned int __k, class _CharT, class _Traits> 
   std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::shuffle_order_engine<_RandomNumberEngine, __k>&)'
/usr/include/c++/8/bits/random.tcc:828: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::shuffle_order_engine<_RandomNumberEngine, __k>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1192: note: candidate: 'template<class 
   _IntType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::negative_binomial_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:1192: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::negative_binomial_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1403: note: candidate: 'template<class 
   _IntType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::poisson_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:1403: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::poisson_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1670: note: candidate: 'template<class 
   _IntType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::binomial_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:1670: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::binomial_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1901: note: candidate: 'template<class 
   _RealType1, class _CharT, class _Traits> std::basic_ostream<_CharT, 
   _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::normal_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:1901: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::normal_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:1966: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::lognormal_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:1966: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::lognormal_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2039: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::chi_squared_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2039: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::chi_squared_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2203: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::fisher_f_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2203: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::fisher_f_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2278: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::student_t_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2278: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::student_t_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2447: note: candidate: 'template<class 
   _RealType1, class _CharT, class _Traits> std::basic_ostream<_CharT, 
   _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::gamma_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2447: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::gamma_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2737: note: candidate: 'template<class 
   _IntType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::discrete_distribution<_IntType>&)'
/usr/include/c++/8/bits/random.tcc:2737: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::discrete_distribution<_IntType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:2947: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::piecewise_constant_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:2947: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::piecewise_constant_distribution<_RealType>'
In file included from /usr/include/c++/8/random:51,
                 from /usr/include/c++/8/x86_64-redhat-linux/bits/stdc++.h:108,
                 from c.cc:4:
/usr/include/c++/8/bits/random.tcc:3163: note: candidate: 'template<class 
   _RealType, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const 
   std::piecewise_linear_distribution<_RealType>&)'
/usr/include/c++/8/bits/random.tcc:3163: note:   template argument 
   deduction/substitution failed:
c.cc:2: note:   'std::vector<int>' is not derived from 'const 
   std::piecewise_linear_distribution<_RealType>'

Options

On the other hand, -Wfatal-errors makes it all stop. This is odd, because the purpose of -Wfatal-errors is to make the compiler stop after the first error. Computers are mysterious.

vector<int> v;
cout << v;
c.cc:2: error: no match for 'operator<<' in 'std::cout << v' (operand types are 
   'std::ostream' {aka 'std::basic_ostream<char>'} and 'std::vector<int>')

#1

This works:

stringstream ss;
ss << 42;
cout << "It is " << ss.str();
It is 42

Why does this fail?

stringstream ss;
cout << "It is " << (ss << 42).str();
c.cc:2: error: 'class std::basic_ostream<char>' has no member named 'str'

Go nuts and read the error message. The entire message.

Why did it fail?

operator<< yields an ostream, not an ostringstream.

#2

vector<int> x;
x.pushback(3);
c.cc:2: error: 'class std::vector<int>' has no member named 'pushback'; did you 
   mean 'push_back'?

Well, that used to be difficult, until g++ started doing spelling correction.

#3

class Foo {
  public:
    int n;
};

ostream &operator>>(ostream &os, const Foo &f) {
    return os << f.n;
}

int main() {
    Foo bar;
    cout << bar;
}
c.cc:12: error: no match for 'operator<<' in 'std::cout << bar' (operand types 
   are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'Foo')
Why did it fail?

We defined operator>> instead of operator<<. It makes no sense to define operator>> for an ostream, but we can’t expect g++ to know that.

#4

class Foo {
  public:
    int n;
};

ostream &operator<<(ostream os, const Foo &f) {
    return os << f.n;
}

int main() {
    Foo bar;
    cout << bar;
}
c.cc:12: error: use of deleted function 'std::basic_ostream<_CharT, 
   _Traits>::basic_ostream(const std::basic_ostream<_CharT, _Traits>&) [with 
   _CharT = char; _Traits = std::char_traits<char>]'

Let’s tackle that message in the the next slide.

Simplifying

This error message is just too long to comprehend:

c.cc:12: error: use of deleted function 'std::basic_ostream<_CharT, _Traits>::basic_ostream(const std::basic_ostream<_CharT, _Traits>&) [with _CharT = char; _Traits = std::char_traits<char>]'

First, remove std:::

c.cc:12: error: use of deleted function 'basic_ostream<_CharT, _Traits>::basic_ostream(const basic_ostream<_CharT, _Traits>&) [with _CharT = char; _Traits = char_traits<char>]'

More Simplifying

Still too long to comprehend:

c.cc:12: error: use of deleted function 'basic_ostream<_CharT, _Traits>::basic_ostream(const basic_ostream<_CharT, _Traits>&) [with _CharT = char; _Traits = char_traits<char>]'

Replace basic_whatever<> with whatever

c.cc:12: error: use of deleted function 'ostream::ostream(const ostream&) [with _CharT = char; _Traits = char_traits<char>]'

More Simplifying

Still too long to comprehend:

c.cc:12: error: use of deleted function 'ostream::ostream(const ostream&) [with _CharT = char; _Traits = char_traits<char>]'

Let’s format that a bit:

c.cc:12: error: use of deleted function '
ostream::ostream(const ostream&)
[with _CharT = char; _Traits = char_traits<char>]'

More Simplifying

Do we understand this?

c.cc:12: error: use of deleted function '
ostream::ostream(const ostream&)
[with _CharT = char; _Traits = char_traits<char>]'

That’s a copy constructor! It’s trying to copy an ostream, but you can’t do that!

ostream &operator<<(ostream os, const Foo &f) {
    return os << f.n;
}

The ostream os argument should be ostream &os, to pass by reference, not value.

How to accomplish that