In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<6u, Test, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:147:13: error: cannot declare field 'std::_Head_base<6u, Test, false>::_M_head_impl' to be of abstract type 'Test'
_Head _M_head_impl;
^
prog.cpp:69:8: note: because the following virtual functions are pure within 'Test':
struct Test
^
prog.cpp:69:8: note: virtual Test::~Test()
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<5u, Test, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:147:13: error: cannot declare field 'std::_Head_base<5u, Test, false>::_M_head_impl' to be of abstract type 'Test'
_Head _M_head_impl;
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<4u, void, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:107:17: error: forming reference to void
constexpr _Head_base(const _Head& __h)
^
/usr/include/c++/5/tuple:142:7: error: forming reference to void
_M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:145:7: error: forming reference to void
_M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:147:13: error: 'std::_Head_base<_Idx, _Head, false>::_M_head_impl' has incomplete type
_Head _M_head_impl;
^
/usr/include/c++/5/tuple:147:13: error: invalid use of 'void'
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<4u, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:190:7: error: forming reference to void
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:193:7: error: forming reference to void
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<3u, Test, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:147:13: error: cannot declare field 'std::_Head_base<3u, Test, false>::_M_head_impl' to be of abstract type 'Test'
_Head _M_head_impl;
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<3u, Test, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<2u, void, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:107:17: error: forming reference to void
constexpr _Head_base(const _Head& __h)
^
/usr/include/c++/5/tuple:142:7: error: forming reference to void
_M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:145:7: error: forming reference to void
_M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:147:13: error: 'std::_Head_base<_Idx, _Head, false>::_M_head_impl' has incomplete type
_Head _M_head_impl;
^
/usr/include/c++/5/tuple:147:13: error: invalid use of 'void'
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<2u, void, Test, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:190:7: error: forming reference to void
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:193:7: error: forming reference to void
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<1u, void, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:107:17: error: forming reference to void
constexpr _Head_base(const _Head& __h)
^
/usr/include/c++/5/tuple:142:7: error: forming reference to void
_M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:145:7: error: forming reference to void
_M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:147:13: error: 'std::_Head_base<_Idx, _Head, false>::_M_head_impl' has incomplete type
_Head _M_head_impl;
^
/usr/include/c++/5/tuple:147:13: error: invalid use of 'void'
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<1u, void, void, Test, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:190:7: error: forming reference to void
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:193:7: error: forming reference to void
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<0u, std::tuple<>, void, void, Test, void, Test, Test>':
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'class std::tuple<std::tuple<>, void, void, Test, void, Test, Test>':
/usr/include/c++/5/tuple:1114:5: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:472:17: error: forming reference to void
constexpr tuple(const _Elements&... __elements)
^
/usr/include/c++/5/tuple:506:2: error: forming reference to void
tuple(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<4u, Test, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:147:13: error: cannot declare field 'std::_Head_base<4u, Test, false>::_M_head_impl' to be of abstract type 'Test'
_Head _M_head_impl;
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<3u, void, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:107:17: error: forming reference to void
constexpr _Head_base(const _Head& __h)
^
/usr/include/c++/5/tuple:142:7: error: forming reference to void
_M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:145:7: error: forming reference to void
_M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:147:13: error: 'std::_Head_base<_Idx, _Head, false>::_M_head_impl' has incomplete type
_Head _M_head_impl;
^
/usr/include/c++/5/tuple:147:13: error: invalid use of 'void'
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<3u, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:190:7: error: forming reference to void
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:193:7: error: forming reference to void
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<2u, Test, false>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:147:13: error: cannot declare field 'std::_Head_base<2u, Test, false>::_M_head_impl' to be of abstract type 'Test'
_Head _M_head_impl;
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<2u, Test, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: recursively required from 'struct std::_Tuple_impl<1u, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<1u, void, Test, void, Test, Test>':
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:190:7: error: forming reference to void
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:193:7: error: forming reference to void
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Head_base<0u, void, false>':
/usr/include/c++/5/tuple:180:12: required from 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>'
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:107:17: error: forming reference to void
constexpr _Head_base(const _Head& __h)
^
/usr/include/c++/5/tuple:142:7: error: forming reference to void
_M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:145:7: error: forming reference to void
_M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
^
/usr/include/c++/5/tuple:147:13: error: 'std::_Head_base<_Idx, _Head, false>::_M_head_impl' has incomplete type
_Head _M_head_impl;
^
/usr/include/c++/5/tuple:147:13: error: invalid use of 'void'
/usr/include/c++/5/tuple: In instantiation of 'struct std::_Tuple_impl<0u, void, void, Test, void, Test, Test>':
/usr/include/c++/5/tuple:463:11: required from 'class std::tuple<void, void, Test, void, Test, Test>'
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:190:7: error: forming reference to void
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:193:7: error: forming reference to void
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
^
/usr/include/c++/5/tuple:205:17: error: forming reference to void
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
^
/usr/include/c++/5/tuple:242:2: error: forming reference to void
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'class std::tuple<void, void, Test, void, Test, Test>':
/usr/include/c++/5/bits/move.h:77:36: required from 'constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = std::tuple<void, void, Test, void, Test, Test>; typename std::remove_reference<_From>::type = std::tuple<void, void, Test, void, Test, Test>]'
/usr/include/c++/5/tuple:1120:51: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:472:17: error: forming reference to void
constexpr tuple(const _Elements&... __elements)
^
/usr/include/c++/5/tuple:506:2: error: forming reference to void
tuple(allocator_arg_t __tag, const _Alloc& __a,
^
/usr/include/c++/5/tuple: In instantiation of 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]':
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:1095:24: error: no matching function for call to 'get(std::tuple<void, void, Test, void, Test, Test>)'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
In file included from /usr/include/c++/5/tuple:38:0,
from prog.cpp:2:
/usr/include/c++/5/utility:147:5: note: candidate: template<unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)
get(std::pair<_Tp1, _Tp2>& __in) noexcept
^
/usr/include/c++/5/utility:147:5: note: template argument deduction/substitution failed:
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple:1095:24: note: 'std::tuple<void, void, Test, void, Test, Test>' is not derived from 'std::pair<_Tp1, _Tp2>'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
In file included from /usr/include/c++/5/tuple:38:0,
from prog.cpp:2:
/usr/include/c++/5/utility:152:5: note: candidate: template<unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(std::pair<_Tp1, _Tp2>&&)
get(std::pair<_Tp1, _Tp2>&& __in) noexcept
^
/usr/include/c++/5/utility:152:5: note: template argument deduction/substitution failed:
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple:1095:24: note: 'std::tuple<void, void, Test, void, Test, Test>' is not derived from 'std::pair<_Tp1, _Tp2>'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
In file included from /usr/include/c++/5/tuple:38:0,
from prog.cpp:2:
/usr/include/c++/5/utility:157:5: note: candidate: template<unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(const std::pair<_Tp1, _Tp2>&)
get(const std::pair<_Tp1, _Tp2>& __in) noexcept
^
/usr/include/c++/5/utility:157:5: note: template argument deduction/substitution failed:
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple:1095:24: note: 'std::tuple<void, void, Test, void, Test, Test>' is not derived from 'const std::pair<_Tp1, _Tp2>'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
In file included from /usr/include/c++/5/tuple:38:0,
from prog.cpp:2:
/usr/include/c++/5/utility:166:5: note: candidate: template<class _Tp, class _Up> constexpr _Tp& std::get(std::pair<_T1, _T2>&)
get(pair<_Tp, _Up>& __p) noexcept
^
/usr/include/c++/5/utility:166:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/utility:171:5: note: candidate: template<class _Tp, class _Up> constexpr const _Tp& std::get(const std::pair<_T1, _T2>&)
get(const pair<_Tp, _Up>& __p) noexcept
^
/usr/include/c++/5/utility:171:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/utility:176:5: note: candidate: template<class _Tp, class _Up> constexpr _Tp&& std::get(std::pair<_T1, _T2>&&)
get(pair<_Tp, _Up>&& __p) noexcept
^
/usr/include/c++/5/utility:176:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/utility:181:5: note: candidate: template<class _Tp, class _Up> constexpr _Tp& std::get(std::pair<_Up, _Tp>&)
get(pair<_Up, _Tp>& __p) noexcept
^
/usr/include/c++/5/utility:181:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/utility:186:5: note: candidate: template<class _Tp, class _Up> constexpr const _Tp& std::get(const std::pair<_Up, _Tp>&)
get(const pair<_Up, _Tp>& __p) noexcept
^
/usr/include/c++/5/utility:186:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/utility:191:5: note: candidate: template<class _Tp, class _Up> constexpr _Tp&& std::get(std::pair<_Up, _Tp>&&)
get(pair<_Up, _Tp>&& __p) noexcept
^
/usr/include/c++/5/utility:191:5: note: template argument deduction/substitution failed:
In file included from /usr/include/c++/5/tuple:39:0,
from prog.cpp:2:
/usr/include/c++/5/array:280:5: note: candidate: template<unsigned int _Int, class _Tp, unsigned int _Nm> constexpr _Tp& std::get(std::array<_Tp, _Nm>&)
get(array<_Tp, _Nm>& __arr) noexcept
^
/usr/include/c++/5/array:280:5: note: template argument deduction/substitution failed:
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple:1095:24: note: 'std::tuple<void, void, Test, void, Test, Test>' is not derived from 'std::array<_Tp, _Nm>'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
In file included from /usr/include/c++/5/tuple:39:0,
from prog.cpp:2:
/usr/include/c++/5/array:289:5: note: candidate: template<unsigned int _Int, class _Tp, unsigned int _Nm> constexpr _Tp&& std::get(std::array<_Tp, _Nm>&&)
get(array<_Tp, _Nm>&& __arr) noexcept
^
/usr/include/c++/5/array:289:5: note: template argument deduction/substitution failed:
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple:1095:24: note: 'std::tuple<void, void, Test, void, Test, Test>' is not derived from 'std::array<_Tp, _Nm>'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
In file included from /usr/include/c++/5/tuple:39:0,
from prog.cpp:2:
/usr/include/c++/5/array:297:5: note: candidate: template<unsigned int _Int, class _Tp, unsigned int _Nm> constexpr const _Tp& std::get(const std::array<_Tp, _Nm>&)
get(const array<_Tp, _Nm>& __arr) noexcept
^
/usr/include/c++/5/array:297:5: note: template argument deduction/substitution failed:
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple:1095:24: note: 'std::tuple<void, void, Test, void, Test, Test>' is not derived from 'const std::array<_Tp, _Nm>'
std::get<_Is>(std::forward<_Tp>(__tp))...);
^
/usr/include/c++/5/tuple:832:5: note: candidate: template<unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Elements ...> >& std::get(std::tuple<_Elements ...>&)
get(tuple<_Elements...>& __t) noexcept
^
/usr/include/c++/5/tuple:832:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/tuple: In substitution of 'template<unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Elements ...> >& std::get(std::tuple<_Elements ...>&) [with unsigned int __i = 0u; _Elements = {void, void, Test, void, Test, Test}]':
/usr/include/c++/5/tuple:1095:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]'
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:832:5: error: forming reference to void
/usr/include/c++/5/tuple: In instantiation of 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]':
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:838:5: note: candidate: template<unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Elements ...> >& std::get(const std::tuple<_Elements ...>&)
get(const tuple<_Elements...>& __t) noexcept
^
/usr/include/c++/5/tuple:838:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/tuple: In substitution of 'template<unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Elements ...> >& std::get(const std::tuple<_Elements ...>&) [with unsigned int __i = 0u; _Elements = {void, void, Test, void, Test, Test}]':
/usr/include/c++/5/tuple:1095:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]'
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:838:5: error: forming reference to void
/usr/include/c++/5/tuple: In instantiation of 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]':
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:844:5: note: candidate: template<unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Elements ...> >&& std::get(std::tuple<_Elements ...>&&)
get(tuple<_Elements...>&& __t) noexcept
^
/usr/include/c++/5/tuple:844:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/tuple: In substitution of 'template<unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Elements ...> >&& std::get(std::tuple<_Elements ...>&&) [with unsigned int __i = 0u; _Elements = {void, void, Test, void, Test, Test}]':
/usr/include/c++/5/tuple:1095:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]'
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:844:5: error: forming reference to void
/usr/include/c++/5/tuple: In instantiation of 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {std::tuple<>}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = 0u, 1u, 2u, 3u, 4u, 5u; _Tp = std::tuple<void, void, Test, void, Test, Test>; _Tpls = {}]':
/usr/include/c++/5/tuple:1093:24: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:867:5: note: candidate: template<class _Tp, class ... _Types> constexpr _Tp& std::get(std::tuple<_Elements ...>&)
get(tuple<_Types...>& __t) noexcept
^
/usr/include/c++/5/tuple:867:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/tuple:873:5: note: candidate: template<class _Tp, class ... _Types> constexpr _Tp&& std::get(std::tuple<_Elements ...>&&)
get(tuple<_Types...>&& __t) noexcept
^
/usr/include/c++/5/tuple:873:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/tuple:879:5: note: candidate: template<class _Tp, class ... _Types> constexpr const _Tp& std::get(const std::tuple<_Elements ...>&)
get(const tuple<_Types...>& __t) noexcept
^
/usr/include/c++/5/tuple:879:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/tuple: In instantiation of 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 1u; _Head = void; _Tail = {void, Test, void, Test, Test}]':
/usr/include/c++/5/type_traits:1162:12: required from 'struct std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:137:12: required from 'struct std::__and_<std::is_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>, std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&> >'
/usr/include/c++/5/type_traits:1174:12: required from 'struct std::is_nothrow_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:1205:12: required from 'struct std::__is_nothrow_move_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, true>'
/usr/include/c++/5/type_traits:1211:12: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/5/tuple:218:7: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 0u; _Head = std::tuple<>; _Tail = {void, void, Test, void, Test, Test}]'
/usr/include/c++/5/tuple:1095:52: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/tuple:222:27: error: no matching function for call to 'forward(Test&)'
_Base(std::forward<_Head>(_M_head(__in))) { }
^
In file included from /usr/include/c++/5/bits/stl_pair.h:59:0,
from /usr/include/c++/5/bits/stl_algobase.h:64,
from /usr/include/c++/5/bits/char_traits.h:39,
from /usr/include/c++/5/ios:40,
from /usr/include/c++/5/ostream:38,
from /usr/include/c++/5/iostream:39,
from prog.cpp:1:
/usr/include/c++/5/bits/move.h:76:5: note: candidate: template<class _Tp> constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&)
forward(typename std::remove_reference<_Tp>::type& __t) noexcept
^
/usr/include/c++/5/bits/move.h:76:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/bits/move.h: In substitution of 'template<class _Tp> constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&) [with _Tp = void]':
/usr/include/c++/5/tuple:222:27: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 1u; _Head = void; _Tail = {void, Test, void, Test, Test}]'
/usr/include/c++/5/type_traits:1162:12: required from 'struct std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:137:12: required from 'struct std::__and_<std::is_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>, std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&> >'
/usr/include/c++/5/type_traits:1174:12: required from 'struct std::is_nothrow_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:1205:12: required from 'struct std::__is_nothrow_move_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, true>'
/usr/include/c++/5/type_traits:1211:12: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/5/tuple:218:7: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 0u; _Head = std::tuple<>; _Tail = {void, void, Test, void, Test, Test}]'
/usr/include/c++/5/tuple:1095:52: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/bits/move.h:76:5: error: forming reference to void
/usr/include/c++/5/tuple: In instantiation of 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 1u; _Head = void; _Tail = {void, Test, void, Test, Test}]':
/usr/include/c++/5/type_traits:1162:12: required from 'struct std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:137:12: required from 'struct std::__and_<std::is_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>, std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&> >'
/usr/include/c++/5/type_traits:1174:12: required from 'struct std::is_nothrow_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:1205:12: required from 'struct std::__is_nothrow_move_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, true>'
/usr/include/c++/5/type_traits:1211:12: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/5/tuple:218:7: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 0u; _Head = std::tuple<>; _Tail = {void, void, Test, void, Test, Test}]'
/usr/include/c++/5/tuple:1095:52: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/bits/move.h:87:5: note: candidate: template<class _Tp> constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&&)
forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
^
/usr/include/c++/5/bits/move.h:87:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/bits/move.h: In substitution of 'template<class _Tp> constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&&) [with _Tp = void]':
/usr/include/c++/5/tuple:222:27: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 1u; _Head = void; _Tail = {void, Test, void, Test, Test}]'
/usr/include/c++/5/type_traits:1162:12: required from 'struct std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:137:12: required from 'struct std::__and_<std::is_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>, std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&> >'
/usr/include/c++/5/type_traits:1174:12: required from 'struct std::is_nothrow_constructible<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:1205:12: required from 'struct std::__is_nothrow_move_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, true>'
/usr/include/c++/5/type_traits:1211:12: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/5/tuple:218:7: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 0u; _Head = std::tuple<>; _Tail = {void, void, Test, void, Test, Test}]'
/usr/include/c++/5/tuple:1095:52: required from 'static constexpr _Ret std::__tuple_concater<_Ret, std::_Index_tuple<_Is ...>, _Tp, _Tpls ...>::_S_do(_Tp&&, _Tpls&& ..., _Us&& ...) [with _Us = {}; _Ret = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>; unsigned int ..._Is = {0u}; _Tp = std::tuple<std::tuple<> >; _Tpls = {std::tuple<void, void, Test, void, Test, Test>}]'
/usr/include/c++/5/tuple:1120:31: required from 'constexpr typename std::__tuple_cat_result<_Tpls ...>::__type std::tuple_cat(_Tpls&& ...) [with _Tpls = {std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test>}; <template-parameter-1-2> = void; typename std::__tuple_cat_result<_Tpls ...>::__type = std::tuple<std::tuple<>, void, void, Test, void, Test, Test>]'
prog.cpp:17:87: required from 'struct tuple_type_cat<std::tuple<std::tuple<> >, std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:66:141: required from 'struct tuple_prune<std::tuple<void, void, Test, void, Test, Test> >'
prog.cpp:77:121: required from here
/usr/include/c++/5/bits/move.h:87:5: error: forming reference to void
In file included from prog.cpp:2:0:
/usr/include/c++/5/tuple: In instantiation of 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 2u; _Head = void; _Tail = {Test, void, Test, Test}]':
/usr/include/c++/5/tuple:222:42: required from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head, _Tail ...>&&) [with unsigned int _Idx = 1u; _Head = void; _Tail = {void, Test, void, Test, Test}]'
/usr/include/c++/5/type_traits:1162:12: required from 'struct std::__is_nt_constructible_impl<std::_Tuple_impl<1u, void, void, Test, void, Test, Test>, std::_Tuple_impl<1u, void, void, Test, void, Test, Test>&&>'
/usr/include/c++/5/type_traits:137:12: required from 'struct std::__and_<std::is_constructible<std::_Tuple_impl<1u, void, voi