fork(3) download
  1. #include <complex>
  2. #include <map>
  3.  
  4.  
  5. template<typename T>
  6. struct math_parser{
  7. static const std::map<std::string, T(*)(const T& )> functions;
  8.  
  9. void evaluate(){
  10. functions.begin()->second(T(-1));
  11. }
  12. };
  13.  
  14.  
  15. template<typename T>
  16. const std::map<std::string, T(*)(const T& )> math_parser<T>::functions = {
  17. {std::string("SQRT"), (T(*)(const T& ))&std::sqrt<T>}
  18. };
  19.  
  20.  
  21. int main(){
  22. math_parser<std::complex<long double>> x;
  23. x.evaluate();
  24. }
  25.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex: In instantiation of 'std::complex<_Tp> std::__complex_sqrt(const std::complex<_Tp>&) [with _Tp = std::complex<long double>]':
/usr/include/c++/5/complex:894:58:   required from 'std::complex<_Tp> std::sqrt(const std::complex<_Tp>&) [with _Tp = std::complex<long double>]'
prog.cpp:16:46:   required from 'const std::map<std::basic_string<char>, std::complex<long double> (*)(const std::complex<long double>&), std::less<std::basic_string<char> >, std::allocator<std::pair<const std::basic_string<char>, std::complex<long double> (*)(const std::complex<long double>&)> > > math_parser<std::complex<long double> >::functions'
prog.cpp:10:9:   required from 'void math_parser<T>::evaluate() [with T = std::complex<long double>]'
prog.cpp:23:16:   required from here
/usr/include/c++/5/complex:869:40: error: no match for 'operator<' (operand types are 'std::complex<long double>' and 'std::complex<long double>')
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_pair.h:220:5: note: candidate: template<class _T1, class _T2> constexpr bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)
     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
     ^
/usr/include/c++/5/bits/stl_pair.h:220:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::pair<_T1, _T2>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:298:5: note: candidate: template<class _Iterator> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)
     operator<(const reverse_iterator<_Iterator>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:298:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::reverse_iterator<_Iterator>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:348:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)
     operator<(const reverse_iterator<_IteratorL>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:348:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::reverse_iterator<_Iterator>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:1089:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::move_iterator<_Iterator>&, const std::move_iterator<_IteratorR>&)
     operator<(const move_iterator<_IteratorL>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:1089:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::move_iterator<_Iterator>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:1095:5: note: candidate: template<class _Iterator> bool std::operator<(const std::move_iterator<_Iterator>&, const std::move_iterator<_Iterator>&)
     operator<(const move_iterator<_Iterator>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:1095:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::move_iterator<_Iterator>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:4985:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::basic_string<_CharT, _Traits, _Alloc>&, const std::basic_string<_CharT, _Traits, _Alloc>&)
     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:4985:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:4997:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*)
     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:4997:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:5009:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const _CharT*, const std::basic_string<_CharT, _Traits, _Alloc>&)
     operator<(const _CharT* __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:5009:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   mismatched types 'const _CharT*' and 'std::complex<long double>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/ios_base.h:46:0,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/system_error:200:3: note: candidate: bool std::operator<(const std::error_code&, const std::error_code&)
   operator<(const error_code& __lhs, const error_code& __rhs) noexcept
   ^
/usr/include/c++/5/system_error:200:3: note:   no known conversion for argument 1 from 'std::complex<long double>' to 'const std::error_code&'
/usr/include/c++/5/system_error:274:3: note: candidate: bool std::operator<(const std::error_condition&, const std::error_condition&)
   operator<(const error_condition& __lhs,
   ^
/usr/include/c++/5/system_error:274:3: note:   no known conversion for argument 1 from 'std::complex<long double>' to 'const std::error_condition&'
In file included from /usr/include/c++/5/map:60:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_tree.h:1283:5: note: candidate: template<class _Key, class _Val, class _KeyOfValue, class _Compare, class _Alloc> bool std::operator<(const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&, const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&)
     operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_tree.h:1283:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/tuple:39:0,
                 from /usr/include/c++/5/bits/stl_map.h:63,
                 from /usr/include/c++/5/map:61,
                 from prog.cpp:2:
/usr/include/c++/5/array:250:5: note: candidate: template<class _Tp, unsigned int _Nm> bool std::operator<(const std::array<_Tp, _Nm>&, const std::array<_Tp, _Nm>&)
     operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
     ^
/usr/include/c++/5/array:250:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::array<_Tp, _Nm>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/bits/stl_map.h:63:0,
                 from /usr/include/c++/5/map:61,
                 from prog.cpp:2:
/usr/include/c++/5/tuple:928:5: note: candidate: template<class ... _TElements, class ... _UElements> constexpr bool std::operator<(const std::tuple<_Args1 ...>&, const std::tuple<_Args2 ...>&)
     operator<(const tuple<_TElements...>& __t,
     ^
/usr/include/c++/5/tuple:928:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::tuple<_Args1 ...>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:1090:5: note: candidate: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator<(const std::map<_Key, _Tp, _Compare, _Alloc>&, const std::map<_Key, _Tp, _Compare, _Alloc>&)
     operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_map.h:1090:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::map<_Key, _Tp, _Compare, _Alloc>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
In file included from /usr/include/c++/5/map:62:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_multimap.h:991:5: note: candidate: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator<(const std::multimap<_Key, _Tp, _Compare, _Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&)
     operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_multimap.h:991:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:869:40: note:   'std::complex<long double>' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'
           return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
                                        ^
/usr/include/c++/5/complex:873:28: error: no match for 'operator*' (operand types are 'int' and 'std::complex<long double>')
           _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
                            ^
/usr/include/c++/5/complex:386:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const std::complex<_Tp>&)
     operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
     ^
/usr/include/c++/5/complex:386:5: note:   template argument deduction/substitution failed:
/usr/include/c++/5/complex:873:28: note:   mismatched types 'const std::complex<_Tp>' and 'int'
           _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
                            ^
/usr/include/c++/5/complex:395:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const _Tp&)
     operator*(const complex<_Tp>& __x, const _Tp& __y)
     ^
/usr/include/c++/5/complex:395:5: note:   template argument deduction/substitution failed:
/usr/include/c++/5/complex:873:28: note:   mismatched types 'const std::complex<_Tp>' and 'int'
           _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
                            ^
/usr/include/c++/5/complex:404:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const _Tp&, const std::complex<_Tp>&)
     operator*(const _Tp& __x, const complex<_Tp>& __y)
     ^
/usr/include/c++/5/complex:404:5: note:   template argument deduction/substitution failed:
/usr/include/c++/5/complex:873:28: note:   deduced conflicting types for parameter '_Tp' ('int' and 'long double')
           _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
                            ^
/usr/include/c++/5/complex:874:25: error: no match for 'operator/' (operand types are 'std::complex<long double>' and 'int')
           _Tp __u = __t / 2;
                         ^
/usr/include/c++/5/complex:416:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator/(const std::complex<_Tp>&, const std::complex<_Tp>&)
     operator/(const complex<_Tp>& __x, const complex<_Tp>& __y)
     ^
/usr/include/c++/5/complex:416:5: note:   template argument deduction/substitution failed:
/usr/include/c++/5/complex:874:25: note:   mismatched types 'const std::complex<_Tp>' and 'int'
           _Tp __u = __t / 2;
                         ^
/usr/include/c++/5/complex:425:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator/(const std::complex<_Tp>&, const _Tp&)
     operator/(const complex<_Tp>& __x, const _Tp& __y)
     ^
/usr/include/c++/5/complex:425:5: note:   template argument deduction/substitution failed:
/usr/include/c++/5/complex:874:25: note:   deduced conflicting types for parameter 'const _Tp' ('long double' and 'int')
           _Tp __u = __t / 2;
                         ^
/usr/include/c++/5/complex:434:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator/(const _Tp&, const std::complex<_Tp>&)
     operator/(const _Tp& __x, const complex<_Tp>& __y)
     ^
/usr/include/c++/5/complex:434:5: note:   template argument deduction/substitution failed:
/usr/include/c++/5/complex:874:25: note:   mismatched types 'const std::complex<_Tp>' and 'int'
           _Tp __u = __t / 2;
                         ^
/usr/include/c++/5/complex:875:22: error: no match for 'operator>' (operand types are 'std::complex<long double>' and 'std::complex<long double>')
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_pair.h:233:5: note: candidate: template<class _T1, class _T2> constexpr bool std::operator>(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)
     operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
     ^
/usr/include/c++/5/bits/stl_pair.h:233:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::pair<_T1, _T2>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:310:5: note: candidate: template<class _Iterator> bool std::operator>(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)
     operator>(const reverse_iterator<_Iterator>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:310:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::reverse_iterator<_Iterator>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:360:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator>(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)
     operator>(const reverse_iterator<_IteratorL>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:360:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::reverse_iterator<_Iterator>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:1113:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator>(const std::move_iterator<_Iterator>&, const std::move_iterator<_IteratorR>&)
     operator>(const move_iterator<_IteratorL>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:1113:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::move_iterator<_Iterator>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:1119:5: note: candidate: template<class _Iterator> bool std::operator>(const std::move_iterator<_Iterator>&, const std::move_iterator<_Iterator>&)
     operator>(const move_iterator<_Iterator>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:1119:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::move_iterator<_Iterator>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:5022:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator>(const std::basic_string<_CharT, _Traits, _Alloc>&, const std::basic_string<_CharT, _Traits, _Alloc>&)
     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:5022:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:5034:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator>(const std::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*)
     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:5034:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:5046:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator>(const _CharT*, const std::basic_string<_CharT, _Traits, _Alloc>&)
     operator>(const _CharT* __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:5046:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   mismatched types 'const _CharT*' and 'std::complex<long double>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/map:60:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_tree.h:1300:5: note: candidate: template<class _Key, class _Val, class _KeyOfValue, class _Compare, class _Alloc> bool std::operator>(const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&, const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&)
     operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_tree.h:1300:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/tuple:39:0,
                 from /usr/include/c++/5/bits/stl_map.h:63,
                 from /usr/include/c++/5/map:61,
                 from prog.cpp:2:
/usr/include/c++/5/array:258:5: note: candidate: template<class _Tp, unsigned int _Nm> bool std::operator>(const std::array<_Tp, _Nm>&, const std::array<_Tp, _Nm>&)
     operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
     ^
/usr/include/c++/5/array:258:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::array<_Tp, _Nm>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/bits/stl_map.h:63:0,
                 from /usr/include/c++/5/map:61,
                 from prog.cpp:2:
/usr/include/c++/5/tuple:947:5: note: candidate: template<class ... _TElements, class ... _UElements> constexpr bool std::operator>(const std::tuple<_Args1 ...>&, const std::tuple<_Args2 ...>&)
     operator>(const tuple<_TElements...>& __t,
     ^
/usr/include/c++/5/tuple:947:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::tuple<_Args1 ...>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:1104:5: note: candidate: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator>(const std::map<_Key, _Tp, _Compare, _Alloc>&, const std::map<_Key, _Tp, _Compare, _Alloc>&)
     operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_map.h:1104:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::map<_Key, _Tp, _Compare, _Alloc>'
           return __x > _Tp()
                      ^
In file included from /usr/include/c++/5/map:62:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_multimap.h:1005:5: note: candidate: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator>(const std::multimap<_Key, _Tp, _Compare, _Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&)
     operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_multimap.h:1005:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:875:22: note:   'std::complex<long double>' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'
           return __x > _Tp()
                      ^
/usr/include/c++/5/complex:877:48: error: no match for 'operator<' (operand types are 'std::complex<long double>' and 'std::complex<long double>')
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_pair.h:220:5: note: candidate: template<class _T1, class _T2> constexpr bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)
     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
     ^
/usr/include/c++/5/bits/stl_pair.h:220:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::pair<_T1, _T2>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:298:5: note: candidate: template<class _Iterator> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)
     operator<(const reverse_iterator<_Iterator>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:298:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::reverse_iterator<_Iterator>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:348:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)
     operator<(const reverse_iterator<_IteratorL>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:348:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::reverse_iterator<_Iterator>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:1089:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::move_iterator<_Iterator>&, const std::move_iterator<_IteratorR>&)
     operator<(const move_iterator<_IteratorL>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:1089:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::move_iterator<_Iterator>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/stl_iterator.h:1095:5: note: candidate: template<class _Iterator> bool std::operator<(const std::move_iterator<_Iterator>&, const std::move_iterator<_Iterator>&)
     operator<(const move_iterator<_Iterator>& __x,
     ^
/usr/include/c++/5/bits/stl_iterator.h:1095:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::move_iterator<_Iterator>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:4985:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::basic_string<_CharT, _Traits, _Alloc>&, const std::basic_string<_CharT, _Traits, _Alloc>&)
     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:4985:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:4997:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*)
     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:4997:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.h:5009:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const _CharT*, const std::basic_string<_CharT, _Traits, _Alloc>&)
     operator<(const _CharT* __lhs,
     ^
/usr/include/c++/5/bits/basic_string.h:5009:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   mismatched types 'const _CharT*' and 'std::complex<long double>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/ios_base.h:46:0,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from prog.cpp:1:
/usr/include/c++/5/system_error:200:3: note: candidate: bool std::operator<(const std::error_code&, const std::error_code&)
   operator<(const error_code& __lhs, const error_code& __rhs) noexcept
   ^
/usr/include/c++/5/system_error:200:3: note:   no known conversion for argument 1 from 'std::complex<long double>' to 'const std::error_code&'
/usr/include/c++/5/system_error:274:3: note: candidate: bool std::operator<(const std::error_condition&, const std::error_condition&)
   operator<(const error_condition& __lhs,
   ^
/usr/include/c++/5/system_error:274:3: note:   no known conversion for argument 1 from 'std::complex<long double>' to 'const std::error_condition&'
In file included from /usr/include/c++/5/map:60:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_tree.h:1283:5: note: candidate: template<class _Key, class _Val, class _KeyOfValue, class _Compare, class _Alloc> bool std::operator<(const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&, const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&)
     operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_tree.h:1283:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/tuple:39:0,
                 from /usr/include/c++/5/bits/stl_map.h:63,
                 from /usr/include/c++/5/map:61,
                 from prog.cpp:2:
/usr/include/c++/5/array:250:5: note: candidate: template<class _Tp, unsigned int _Nm> bool std::operator<(const std::array<_Tp, _Nm>&, const std::array<_Tp, _Nm>&)
     operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
     ^
/usr/include/c++/5/array:250:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::array<_Tp, _Nm>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/bits/stl_map.h:63:0,
                 from /usr/include/c++/5/map:61,
                 from prog.cpp:2:
/usr/include/c++/5/tuple:928:5: note: candidate: template<class ... _TElements, class ... _UElements> constexpr bool std::operator<(const std::tuple<_Args1 ...>&, const std::tuple<_Args2 ...>&)
     operator<(const tuple<_TElements...>& __t,
     ^
/usr/include/c++/5/tuple:928:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::tuple<_Args1 ...>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:1090:5: note: candidate: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator<(const std::map<_Key, _Tp, _Compare, _Alloc>&, const std::map<_Key, _Tp, _Compare, _Alloc>&)
     operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_map.h:1090:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::map<_Key, _Tp, _Compare, _Alloc>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
In file included from /usr/include/c++/5/map:62:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_multimap.h:991:5: note: candidate: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator<(const std::multimap<_Key, _Tp, _Compare, _Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&)
     operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
     ^
/usr/include/c++/5/bits/stl_multimap.h:991:5: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/5/complex:877:48: note:   'std::complex<long double>' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'
             : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
                                                ^
stdout
Standard output is empty