#include <iostream>
#include <vector>
#include <utility>
using namespace std;
 
using queens = std::vector<std::pair<size_t, size_t>>;
 
void test(queens q = {})
{
  q = queens{std::make_pair<size_t, size_t>(2,1)};
  size_t i = 2;
  q = queens{std::make_pair<size_t, size_t>(i, 1)};			// crap
  //q = queens{std::make_pair<size_t, size_t>(i, static_cast<size_t>(1))};	// same	
}
 
int main() 
{
  queens q;
  return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dXRpbGl0eT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIHF1ZWVucyA9IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4+OwoKdm9pZCB0ZXN0KHF1ZWVucyBxID0ge30pCnsKICBxID0gcXVlZW5ze3N0ZDo6bWFrZV9wYWlyPHNpemVfdCwgc2l6ZV90PigyLDEpfTsKICBzaXplX3QgaSA9IDI7CiAgcSA9IHF1ZWVuc3tzdGQ6Om1ha2VfcGFpcjxzaXplX3QsIHNpemVfdD4oaSwgMSl9OwkJCS8vIGNyYXAKICAvL3EgPSBxdWVlbnN7c3RkOjptYWtlX3BhaXI8c2l6ZV90LCBzaXplX3Q+KGksIHN0YXRpY19jYXN0PHNpemVfdD4oMSkpfTsJLy8gc2FtZQkKfQoKaW50IG1haW4oKSAKewogIHF1ZWVucyBxOwogIHJldHVybiAwOwp9
				
				
				
				
				
			 
			
				
			
			
				
	
		
	
	
	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