fork download
  1. #include <functional>
  2. #include <iostream>
  3. #include <memory>
  4.  
  5. struct test
  6. {
  7. test() = default;
  8. test(const test &)
  9. {
  10. std::cout << "copied" << std::endl;
  11. }
  12. void func(int i)
  13. {
  14. std::cout << i << std::endl;
  15. }
  16. };
  17.  
  18.  
  19. int main()
  20. {
  21. std::unique_ptr<test> tp = std::make_unique<test>();
  22. std::function<void(int)> f1 = std::bind(&test::func, tp, std::placeholders::_1);
  23. }
  24.  
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++/6/functional: In instantiation of ‘std::_Bind<_Functor(_Bound_args ...)>::_Bind(_Functor&&, _Args&& ...) [with _Args = {std::unique_ptr<test, std::default_delete<test> >&, const std::_Placeholder<1>&}; _Functor = std::_Mem_fn<void (test::*)(int)>; _Bound_args = {std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1>}]’:
/usr/include/c++/6/functional:1327:14:   required from ‘typename std::_Bind_helper<std::__is_socketlike<_Func>::value, _Func, _BoundArgs ...>::type std::bind(_Func&&, _BoundArgs&& ...) [with _Func = void (test::*)(int); _BoundArgs = {std::unique_ptr<test, std::default_delete<test> >&, const std::_Placeholder<1>&}; typename std::_Bind_helper<std::__is_socketlike<_Func>::value, _Func, _BoundArgs ...>::type = std::_Bind<std::_Mem_fn<void (test::*)(int)>(std::unique_ptr<test>, std::_Placeholder<1>)>]’
prog.cpp:22:83:   required from here
/usr/include/c++/6/functional:974:70: error: no matching function for call to ‘std::tuple<std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::tuple(std::unique_ptr<test>&, const std::_Placeholder<1>&)’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1162:18: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && (! _ImplicitlyMoveConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, std::pair<_U1, _U2>&&)
         explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
                  ^~~~~
/usr/include/c++/6/tuple:1162:18: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1152:9: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && _ImplicitlyMoveConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, std::pair<_U1, _U2>&&)
         tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in)
         ^~~~~
/usr/include/c++/6/tuple:1152:9: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1142:18: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && (! _ImplicitlyConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const std::pair<_U1, _U2>&)
         explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
                  ^~~~~
/usr/include/c++/6/tuple:1142:18: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1132:9: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && _ImplicitlyConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const std::pair<_U1, _U2>&)
         tuple(allocator_arg_t __tag, const _Alloc& __a,
         ^~~~~
/usr/include/c++/6/tuple:1132:9: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1121:11: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && (! _ImplicitlyMoveConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, std::tuple<_U1, _U2>&&)
  explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
           ^~~~~
/usr/include/c++/6/tuple:1121:11: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1111:2: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && _ImplicitlyMoveConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, std::tuple<_U1, _U2>&&)
  tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in)
  ^~~~~
/usr/include/c++/6/tuple:1111:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1099:11: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && (! _ImplicitlyConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const std::tuple<_U1, _U2>&)
  explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
           ^~~~~
/usr/include/c++/6/tuple:1099:11: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1087:2: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && _ImplicitlyConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const std::tuple<_U1, _U2>&)
  tuple(allocator_arg_t __tag, const _Alloc& __a,
  ^~~~~
/usr/include/c++/6/tuple:1087:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1078:2: note: candidate: template<class _Alloc> std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, std::tuple<_T1, _T2>&&)
  tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
  ^~~~~
/usr/include/c++/6/tuple:1078:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1074:2: note: candidate: template<class _Alloc> std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const std::tuple<_T1, _T2>&)
  tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in)
  ^~~~~
/usr/include/c++/6/tuple:1074:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 3 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1068:11: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && (! _ImplicitlyMoveConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, _U1&&, _U2&&)
  explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
           ^~~~~
/usr/include/c++/6/tuple:1068:11: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 4 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1058:2: note: candidate: template<class _Alloc, class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && _ImplicitlyMoveConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, _U1&&, _U2&&)
  tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2)
  ^~~~~
/usr/include/c++/6/tuple:1058:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 4 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1048:11: note: candidate: template<class _Alloc, class _Dummy, typename std::enable_if<(std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ConstructibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >() && (! std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ImplicitlyConvertibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >())), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const _T1&, const _T2&)
  explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
           ^~~~~
/usr/include/c++/6/tuple:1048:11: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 4 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1036:2: note: candidate: template<class _Alloc, class _Dummy, typename std::enable_if<(std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ConstructibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >() && std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ImplicitlyConvertibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >()), bool>::type <anonymous> > std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&, const _T1&, const _T2&)
  tuple(allocator_arg_t __tag, const _Alloc& __a,
  ^~~~~
/usr/include/c++/6/tuple:1036:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 4 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1025:2: note: candidate: template<class _Alloc> std::tuple<_T1, _T2>::tuple(std::allocator_arg_t, const _Alloc&)
  tuple(allocator_arg_t __tag, const _Alloc& __a)
  ^~~~~
/usr/include/c++/6/tuple:1025:2: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   cannot convert ‘std::forward<std::unique_ptr<test>&>((* & __args#0))’ (type ‘std::unique_ptr<test>’) to type ‘std::allocator_arg_t’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1018:28: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && (! _ImplicitlyMoveConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(std::pair<_U1, _U2>&&)
         explicit constexpr tuple(pair<_U1, _U2>&& __in)
                            ^~~~~
/usr/include/c++/6/tuple:1018:28: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘std::pair<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:1008:19: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && _ImplicitlyMoveConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(std::pair<_U1, _U2>&&)
         constexpr tuple(pair<_U1, _U2>&& __in)
                   ^~~~~
/usr/include/c++/6/tuple:1008:19: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘std::pair<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:999:28: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && (! _ImplicitlyConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(const std::pair<_U1, _U2>&)
         explicit constexpr tuple(const pair<_U1, _U2>& __in)
                            ^~~~~
/usr/include/c++/6/tuple:999:28: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘const std::pair<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:990:19: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && _ImplicitlyConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(const std::pair<_U1, _U2>&)
         constexpr tuple(const pair<_U1, _U2>& __in)
                   ^~~~~
/usr/include/c++/6/tuple:990:19: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘const std::pair<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:981:28: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && (! _ImplicitlyMoveConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_U1, _U2>&&)
         explicit constexpr tuple(tuple<_U1, _U2>&& __in)
                            ^~~~~
/usr/include/c++/6/tuple:981:28: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘std::tuple<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:972:19: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_MoveConstructibleTuple<_U1, _U2>() && _ImplicitlyMoveConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_U1, _U2>&&)
         constexpr tuple(tuple<_U1, _U2>&& __in)
                   ^~~~~
/usr/include/c++/6/tuple:972:19: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘std::tuple<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:963:28: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && (! _ImplicitlyConvertibleTuple<_U1, _U2>())), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(const std::tuple<_U1, _U2>&)
         explicit constexpr tuple(const tuple<_U1, _U2>& __in)
                            ^~~~~
/usr/include/c++/6/tuple:963:28: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘const std::tuple<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:954:19: note: candidate: template<class _U1, class _U2, typename std::enable_if<(_ConstructibleTuple<_U1, _U2>() && _ImplicitlyConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(const std::tuple<_U1, _U2>&)
         constexpr tuple(const tuple<_U1, _U2>& __in)
                   ^~~~~
/usr/include/c++/6/tuple:954:19: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   ‘std::unique_ptr<test>’ is not derived from ‘const std::tuple<_T1, _T2>’
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:946:17: note: candidate: constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = std::unique_ptr<test>; _T2 = std::_Placeholder<1>]
       constexpr tuple(tuple&&) = default;
                 ^~~~~
/usr/include/c++/6/tuple:946:17: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/6/tuple:941:28: note: candidate: template<class _U1, class _U2, typename std::enable_if<((_MoveConstructibleTuple<_U1, _U2>() && (! _ImplicitlyMoveConvertibleTuple<_U1, _U2>())) && (! std::is_same<typename std::decay<_Tp>::type, std::allocator_arg_t>::value)), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&)
         explicit constexpr tuple(_U1&& __a1, _U2&& __a2)
                            ^~~~~
/usr/include/c++/6/tuple:941:28: note:   template argument deduction/substitution failed:
/usr/include/c++/6/tuple:940:16: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
  bool>::type = false>
                ^~~~~
/usr/include/c++/6/tuple:940:16: note: invalid template non-type parameter
/usr/include/c++/6/tuple:930:19: note: candidate: template<class _U1, class _U2, typename std::enable_if<((_MoveConstructibleTuple<_U1, _U2>() && _ImplicitlyMoveConvertibleTuple<_U1, _U2>()) && (! std::is_same<typename std::decay<_Tp>::type, std::allocator_arg_t>::value)), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&)
         constexpr tuple(_U1&& __a1, _U2&& __a2)
                   ^~~~~
/usr/include/c++/6/tuple:930:19: note:   template argument deduction/substitution failed:
/usr/include/c++/6/tuple:929:16: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
  bool>::type = true>
                ^~~~
/usr/include/c++/6/tuple:929:16: note: invalid template non-type parameter
/usr/include/c++/6/tuple:915:28: note: candidate: template<class _Dummy, typename std::enable_if<(std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ConstructibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >() && (! std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ImplicitlyConvertibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >())), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&)
         explicit constexpr tuple(const _T1& __a1, const _T2& __a2)
                            ^~~~~
/usr/include/c++/6/tuple:915:28: note:   template argument deduction/substitution failed:
/usr/include/c++/6/tuple:914:16: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
  bool>::type = false>
                ^~~~~
/usr/include/c++/6/tuple:914:16: note: invalid template non-type parameter
/usr/include/c++/6/tuple:906:19: note: candidate: template<class _Dummy, typename std::enable_if<(std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ConstructibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >() && std::_TC<std::is_same<_Dummy, void>::value, std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1> >::_ImplicitlyConvertibleTuple<unique_ptr<test, std::default_delete<test> >, _Placeholder<1> >()), bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&)
         constexpr tuple(const _T1& __a1, const _T2& __a2)
                   ^~~~~
/usr/include/c++/6/tuple:906:19: note:   template argument deduction/substitution failed:
/usr/include/c++/6/tuple:905:16: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
  bool>::type = true>
                ^~~~
/usr/include/c++/6/tuple:905:16: note: invalid template non-type parameter
/usr/include/c++/6/tuple:892:26: note: candidate: template<class _U1, class _U2, typename std::enable_if<std::__and_<std::is_default_constructible<_Tp>, std::is_default_constructible<_U2>, std::__not_<std::__and_<std::__is_implicitly_default_constructible<_U1>, std::__is_implicitly_default_constructible<_U2> > > >::value, bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple()
       explicit constexpr tuple()
                          ^~~~~
/usr/include/c++/6/tuple:892:26: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 0 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:878:17: note: candidate: template<class _U1, class _U2, typename std::enable_if<std::__and_<std::__is_implicitly_default_constructible<_U1>, std::__is_implicitly_default_constructible<_U2> >::value, bool>::type <anonymous> > constexpr std::tuple<_T1, _T2>::tuple()
       constexpr tuple()
                 ^~~~~
/usr/include/c++/6/tuple:878:17: note:   template argument deduction/substitution failed:
In file included from prog.cpp:1:0:
/usr/include/c++/6/functional:974:70: note:   candidate expects 0 arguments, 2 provided
  : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
                                                                      ^
/usr/include/c++/6/functional: In instantiation of ‘static void std::_Function_base::_Base_manager<_Functor>::_M_clone(std::_Any_data&, const std::_Any_data&, std::false_type) [with _Functor = std::_Bind<std::_Mem_fn<void (test::*)(int)>(std::unique_ptr<test>, std::_Placeholder<1>)>; std::false_type = std::integral_constant<bool, false>]’:
/usr/include/c++/6/functional:1606:16:   required from ‘static bool std::_Function_base::_Base_manager<_Functor>::_M_manager(std::_Any_data&, const std::_Any_data&, std::_Manager_operation) [with _Functor = std::_Bind<std::_Mem_fn<void (test::*)(int)>(std::unique_ptr<test>, std::_Placeholder<1>)>]’
/usr/include/c++/6/functional:2116:19:   required from ‘std::function<_Res(_ArgTypes ...)>::function(_Functor) [with _Functor = std::_Bind<std::_Mem_fn<void (test::*)(int)>(std::unique_ptr<test>, std::_Placeholder<1>)>; <template-parameter-2-2> = void; <template-parameter-2-3> = void; _Res = void; _ArgTypes = {int}]’
prog.cpp:22:83:   required from here
/usr/include/c++/6/functional:1571:6: error: use of deleted function ‘std::_Bind<_Functor(_Bound_args ...)>::_Bind(const std::_Bind<_Functor(_Bound_args ...)>&) [with _Functor = std::_Mem_fn<void (test::*)(int)>; _Bound_args = {std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1>}]’
      new _Functor(*__source._M_access<_Functor*>());
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/6/functional:977:7: note: ‘std::_Bind<_Functor(_Bound_args ...)>::_Bind(const std::_Bind<_Functor(_Bound_args ...)>&) [with _Functor = std::_Mem_fn<void (test::*)(int)>; _Bound_args = {std::unique_ptr<test, std::default_delete<test> >, std::_Placeholder<1>}]’ is implicitly deleted because the default definition would be ill-formed:
       _Bind(const _Bind&) = default;
       ^~~~~
/usr/include/c++/6/functional:977:7: error: use of deleted function ‘constexpr std::tuple<_T1, _T2>::tuple(const std::tuple<_T1, _T2>&) [with _T1 = std::unique_ptr<test>; _T2 = std::_Placeholder<1>]’
In file included from /usr/include/c++/6/functional:55:0,
                 from prog.cpp:1:
/usr/include/c++/6/tuple:944:17: note: ‘constexpr std::tuple<_T1, _T2>::tuple(const std::tuple<_T1, _T2>&) [with _T1 = std::unique_ptr<test>; _T2 = std::_Placeholder<1>]’ is implicitly deleted because the default definition would be ill-formed:
       constexpr tuple(const tuple&) = default;
                 ^~~~~
/usr/include/c++/6/tuple:944:17: error: use of deleted function ‘constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(const std::_Tuple_impl<_Idx, _Head, _Tail ...>&) [with long unsigned int _Idx = 0ul; _Head = std::unique_ptr<test>; _Tail = {std::_Placeholder<1>}]’
/usr/include/c++/6/tuple:215:17: note: ‘constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(const std::_Tuple_impl<_Idx, _Head, _Tail ...>&) [with long unsigned int _Idx = 0ul; _Head = std::unique_ptr<test>; _Tail = {std::_Placeholder<1>}]’ is implicitly deleted because the default definition would be ill-formed:
       constexpr _Tuple_impl(const _Tuple_impl&) = default;
                 ^~~~~~~~~~~
/usr/include/c++/6/tuple:215:17: error: use of deleted function ‘constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 0ul; _Head = std::unique_ptr<test>]’
/usr/include/c++/6/tuple:110:17: note: ‘constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 0ul; _Head = std::unique_ptr<test>]’ is implicitly deleted because the default definition would be ill-formed:
       constexpr _Head_base(const _Head_base&) = default;
                 ^~~~~~~~~~
/usr/include/c++/6/tuple:110:17: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = test; _Dp = std::default_delete<test>]’
In file included from /usr/include/c++/6/memory:81:0,
                 from prog.cpp:3:
/usr/include/c++/6/bits/unique_ptr.h:359:7: note: declared here
       unique_ptr(const unique_ptr&) = delete;
       ^~~~~~~~~~
stdout
Standard output is empty