fork download
  1. #include <string>
  2. #include <map>
  3.  
  4. class Object
  5. {
  6. public:
  7. Object(std::map<std::string, void(*)(const std::string&)> MAP)
  8. {/*...code...*/};
  9. };
  10.  
  11. class Main
  12. {
  13. public:
  14. void testFunc(const std::string& A)
  15. {
  16.  
  17. }
  18.  
  19. void construct()
  20. {
  21. Object{
  22. std::map<std::string, void(*)(const std::string&)> {
  23. {"exit", [](const std::string &A){ exit(1); }},
  24. //{"test", (void(::Main*)(const std::string&))&testFunc},
  25. //{"test", [](const std::string &A){ testFunc(A); }},
  26. //{"test", [this](const std::string &A){ testFunc(A); }},
  27. {"NULL", NULL}
  28. }
  29. };
  30.  
  31. ~Object();
  32. }
  33. };
  34.  
  35. int main()
  36. {
  37. Main _Main;
  38. _Main.construct();
  39. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In member function 'void Main::construct()':
prog.cpp:24:55: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say '&Main::testFunc' [-fpermissive]
          {"test", (void(Main::*)(const std::string&))&testFunc},
                                                       ^
prog.cpp:28:7: error: no matching function for call to 'std::map<std::basic_string<char>, void (*)(const std::basic_string<char>&)>::map(<brace-enclosed initializer list>)'
       }
       ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:273:9: note: candidate: template<class _InputIterator> std::map<_Key, _Tp, _Compare, _Alloc>::map(_InputIterator, _InputIterator, const _Compare&, const allocator_type&)
         map(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_map.h:273:9: note:   template argument deduction/substitution failed:
prog.cpp:28:7: note:   cannot convert '{"NULL", 0}' (type '<brace-enclosed initializer list>') to type 'const std::less<std::basic_string<char> >&'
       }
       ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:256:9: note: candidate: template<class _InputIterator> std::map<_Key, _Tp, _Compare, _Alloc>::map(_InputIterator, _InputIterator)
         map(_InputIterator __first, _InputIterator __last)
         ^
/usr/include/c++/5/bits/stl_map.h:256:9: note:   template argument deduction/substitution failed:
prog.cpp:28:7: note:   candidate expects 2 arguments, 3 provided
       }
       ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:239:9: note: candidate: template<class _InputIterator> std::map<_Key, _Tp, _Compare, _Alloc>::map(_InputIterator, _InputIterator, const allocator_type&)
         map(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_map.h:239:9: note:   template argument deduction/substitution failed:
prog.cpp:28:7: note:   cannot convert '{"NULL", 0}' (type '<brace-enclosed initializer list>') to type 'const allocator_type& {aka const std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >&}'
       }
       ^
In file included from /usr/include/c++/5/map:61:0,
                 from prog.cpp:2:
/usr/include/c++/5/bits/stl_map.h:233:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(std::initializer_list<std::pair<const _Key, _Tp> >, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >; std::map<_Key, _Tp, _Compare, _Alloc>::allocator_type = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(initializer_list<value_type> __l, const allocator_type& __a)
       ^
/usr/include/c++/5/bits/stl_map.h:233:7: note:   candidate expects 2 arguments, 3 provided
/usr/include/c++/5/bits/stl_map.h:227:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(std::map<_Key, _Tp, _Compare, _Alloc>&&, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >; std::map<_Key, _Tp, _Compare, _Alloc>::allocator_type = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(map&& __m, const allocator_type& __a)
       ^
/usr/include/c++/5/bits/stl_map.h:227:7: note:   candidate expects 2 arguments, 3 provided
/usr/include/c++/5/bits/stl_map.h:223:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >; std::map<_Key, _Tp, _Compare, _Alloc>::allocator_type = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(const map& __m, const allocator_type& __a)
       ^
/usr/include/c++/5/bits/stl_map.h:223:7: note:   candidate expects 2 arguments, 3 provided
/usr/include/c++/5/bits/stl_map.h:219:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(const allocator_type&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >; std::map<_Key, _Tp, _Compare, _Alloc>::allocator_type = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(const allocator_type& __a)
       ^
/usr/include/c++/5/bits/stl_map.h:219:7: note:   candidate expects 1 argument, 3 provided
/usr/include/c++/5/bits/stl_map.h:211:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(std::initializer_list<std::pair<const _Key, _Tp> >, const _Compare&, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >; std::map<_Key, _Tp, _Compare, _Alloc>::allocator_type = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(initializer_list<value_type> __l,
       ^
/usr/include/c++/5/bits/stl_map.h:211:7: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::initializer_list<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >'
/usr/include/c++/5/bits/stl_map.h:196:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(std::map<_Key, _Tp, _Compare, _Alloc>&&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(map&& __x)
       ^
/usr/include/c++/5/bits/stl_map.h:196:7: note:   candidate expects 1 argument, 3 provided
/usr/include/c++/5/bits/stl_map.h:185:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(const map& __x)
       ^
/usr/include/c++/5/bits/stl_map.h:185:7: note:   candidate expects 1 argument, 3 provided
/usr/include/c++/5/bits/stl_map.h:174:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map(const _Compare&, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >; std::map<_Key, _Tp, _Compare, _Alloc>::allocator_type = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map(const _Compare& __comp,
       ^
/usr/include/c++/5/bits/stl_map.h:174:7: note:   candidate expects 2 arguments, 3 provided
/usr/include/c++/5/bits/stl_map.h:162:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::map() [with _Key = std::basic_string<char>; _Tp = void (*)(const std::basic_string<char>&); _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, void (*)(const std::basic_string<char>&)> >]
       map()
       ^
/usr/include/c++/5/bits/stl_map.h:162:7: note:   candidate expects 0 arguments, 3 provided
prog.cpp:29:5: error: no matching function for call to 'Object::Object(<brace-enclosed initializer list>)'
     };
     ^
prog.cpp:7:2: note: candidate: Object::Object(std::map<std::basic_string<char>, void (*)(const std::basic_string<char>&)>)
  Object(std::map<std::string, void(*)(const std::string&)> MAP)
  ^
prog.cpp:7:2: note:   conversion of argument 1 would be ill-formed:
prog.cpp:4:7: note: candidate: constexpr Object::Object(const Object&)
 class Object
       ^
prog.cpp:4:7: note:   conversion of argument 1 would be ill-formed:
prog.cpp:4:7: note: candidate: constexpr Object::Object(Object&&)
prog.cpp:4:7: note:   conversion of argument 1 would be ill-formed:
prog.cpp:31:13: error: no matching function for call to 'Object::Object()'
     ~Object();
             ^
prog.cpp:7:2: note: candidate: Object::Object(std::map<std::basic_string<char>, void (*)(const std::basic_string<char>&)>)
  Object(std::map<std::string, void(*)(const std::string&)> MAP)
  ^
prog.cpp:7:2: note:   candidate expects 1 argument, 0 provided
prog.cpp:4:7: note: candidate: constexpr Object::Object(const Object&)
 class Object
       ^
prog.cpp:4:7: note:   candidate expects 1 argument, 0 provided
prog.cpp:4:7: note: candidate: constexpr Object::Object(Object&&)
prog.cpp:4:7: note:   candidate expects 1 argument, 0 provided
stdout
Standard output is empty