fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <utility>
  4. using namespace std;
  5.  
  6. using queens = std::vector<std::pair<size_t, size_t>>;
  7.  
  8. void test(queens q = {})
  9. {
  10. q = queens{std::make_pair<size_t, size_t>(2,1)};
  11. size_t i = 2;
  12. q = queens{std::make_pair<size_t, size_t>(i, 1)}; // crap
  13. //q = queens{std::make_pair<size_t, size_t>(i, static_cast<size_t>(1))}; // same
  14. }
  15.  
  16. int main()
  17. {
  18. queens q;
  19. return 0;
  20. }
Compilation error #stdin compilation error #stdout 0s 4372KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘void test(queens)’:
prog.cpp:12:49: error: no matching function for call to ‘make_pair(size_t&, int)’
   q = queens{std::make_pair<size_t, size_t>(i, 1)};   // crap
                                                 ^
In file included from /usr/include/c++/6/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/6/bits/char_traits.h:39,
                 from /usr/include/c++/6/ios:40,
                 from /usr/include/c++/6/ostream:38,
                 from /usr/include/c++/6/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/6/bits/stl_pair.h:493:5: note: candidate: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
     make_pair(_T1&& __x, _T2&& __y)
     ^~~~~~~~~
/usr/include/c++/6/bits/stl_pair.h:493:5: note:   template argument deduction/substitution failed:
prog.cpp:12:49: note:   cannot convert ‘i’ (type ‘size_t {aka long unsigned int}’) to type ‘long unsigned int&&’
   q = queens{std::make_pair<size_t, size_t>(i, 1)};   // crap
                                                 ^
prog.cpp:12:50: error: no matching function for call to ‘std::vector<std::pair<long unsigned int, long unsigned int> >::vector(<brace-enclosed initializer list>)’
   q = queens{std::make_pair<size_t, size_t>(i, 1)};   // crap
                                                  ^
In file included from /usr/include/c++/6/vector:64:0,
                 from prog.cpp:2:
/usr/include/c++/6/bits/stl_vector.h:403:9: note: candidate: template<class _InputIterator, class> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:403:9: note:   template argument deduction/substitution failed:
/usr/include/c++/6/bits/stl_vector.h:375:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(initializer_list<value_type> __l,
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:375:7: note:   conversion of argument 1 would be ill-formed:
/usr/include/c++/6/bits/stl_vector.h:350:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&, const allocator_type&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(vector&& __rv, const allocator_type& __m)
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:350:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/6/bits/stl_vector.h:341:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&, const allocator_type&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(const vector& __x, const allocator_type& __a)
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:341:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/6/bits/stl_vector.h:337:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(vector&& __x) noexcept
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:337:7: note:   conversion of argument 1 would be ill-formed:
/usr/include/c++/6/bits/stl_vector.h:320:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(const vector& __x)
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:320:7: note:   conversion of argument 1 would be ill-formed:
/usr/include/c++/6/bits/stl_vector.h:291:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::pair<long unsigned int, long unsigned int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(size_type __n, const value_type& __value,
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:291:7: note:   candidate expects 3 arguments, 1 provided
/usr/include/c++/6/bits/stl_vector.h:279:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(size_type __n, const allocator_type& __a = allocator_type())
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:279:7: note:   conversion of argument 1 would be ill-formed:
/usr/include/c++/6/bits/stl_vector.h:266:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:266:7: note:   conversion of argument 1 would be ill-formed:
/usr/include/c++/6/bits/stl_vector.h:255:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = std::pair<long unsigned int, long unsigned int>; _Alloc = std::allocator<std::pair<long unsigned int, long unsigned int> >]
       vector()
       ^~~~~~
/usr/include/c++/6/bits/stl_vector.h:255:7: note:   candidate expects 0 arguments, 1 provided
stdout
Standard output is empty