Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <utility>
- #include <string>
- int main() {
- std::cout << "Vectors are easy!" << std::endl;
- typedef std::vector<std::string> strvec;
- typedef std::map<std::string, std::pair<std::string, strvec>> namemap;
- namemap myMap;
- myMap.insert({"McDonald", {"Scottish", {"Mike", "Matt", "Marge"}}});
- myMap.insert({"Smith", {"English", {"Sam", "Slick", "Susan"}}});
- myMap.insert({"Smith", {5, {"Sam", "Slick", "Susan"}}}); // Whoops, we put an int instead of a string for the first part of the pair.
- return 0;
- }
- /* This is the bullshit the compiler gives us
- wat.cpp: In function ‘int main()’:
- wat.cpp:17:56: error: no matching function for call to ‘std::map<std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >::insert(<brace-enclosed initializer list>)’
- myMap.insert({"Smith", {5, {"Sam", "Slick", "Susan"}}});
- ^
- In file included from /usr/include/c++/7/map:61:0,
- from wat.cpp:3:
- /usr/include/c++/7/bits/stl_map.h:795:7: note: candidate: std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >]
- insert(const value_type& __x)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:795:7: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘const value_type& {aka const std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >&}’
- /usr/include/c++/7/bits/stl_map.h:802:7: note: candidate: std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::insert(std::map<_Key, _Tp, _Compare, _Alloc>::value_type&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >]
- insert(value_type&& __x)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:802:7: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::map<std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >::value_type&& {aka std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >&&}’
- /usr/include/c++/7/bits/stl_map.h:808:2: note: candidate: template<class _Pair> std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = _Pair; _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >]
- insert(_Pair&& __x)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:808:2: note: template argument deduction/substitution failed:
- wat.cpp:17:56: note: couldn't deduce template parameter ‘_Pair’
- myMap.insert({"Smith", {5, {"Sam", "Slick", "Susan"}}});
- ^
- In file included from /usr/include/c++/7/map:61:0,
- from wat.cpp:3:
- /usr/include/c++/7/bits/stl_map.h:822:7: note: candidate: void std::map<_Key, _Tp, _Compare, _Alloc>::insert(std::initializer_list<std::pair<const _Key, _Tp> >) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >]
- insert(std::initializer_list<value_type> __list)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:822:7: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::initializer_list<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >’
- /usr/include/c++/7/bits/stl_map.h:852:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::insert(std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator, const value_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >]
- insert(const_iterator __position, const value_type& __x)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:852:7: note: candidate expects 2 arguments, 1 provided
- /usr/include/c++/7/bits/stl_map.h:862:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::insert(std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator, std::map<_Key, _Tp, _Compare, _Alloc>::value_type&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >; std::map<_Key, _Tp, _Compare, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > >]
- insert(const_iterator __position, value_type&& __x)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:862:7: note: candidate expects 2 arguments, 1 provided
- /usr/include/c++/7/bits/stl_map.h:867:2: note: candidate: template<class _Pair> std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator> std::map<_Key, _Tp, _Compare, _Alloc>::insert(std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator, _Pair&&) [with _Pair = _Pair; _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >]
- insert(const_iterator __position, _Pair&& __x)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:867:2: note: template argument deduction/substitution failed:
- wat.cpp:17:56: note: candidate expects 2 arguments, 1 provided
- myMap.insert({"Smith", {5, {"Sam", "Slick", "Susan"}}});
- ^
- In file included from /usr/include/c++/7/map:61:0,
- from wat.cpp:3:
- /usr/include/c++/7/bits/stl_map.h:885:2: note: candidate: template<class _InputIterator> void std::map<_Key, _Tp, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::__cxx11::basic_string<char>; _Tp = std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > > > >]
- insert(_InputIterator __first, _InputIterator __last)
- ^~~~~~
- /usr/include/c++/7/bits/stl_map.h:885:2: note: template argument deduction/substitution failed:
- wat.cpp:17:56: note: candidate expects 2 arguments, 1 provided
- myMap.insert({"Smith", {5, {"Sam", "Slick", "Susan"}}});
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement