Tried to compile with clang-9 and got the following errors:
immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1092:28: error: chosen constructor is explicit in copy-initialization
return { pos.shift(), newn, ts, tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1120:16: error: chosen constructor is explicit in copy-initialization
return { 0, nullptr, new_tail_size, new_tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:201:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_leaf<immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1092:28: error: chosen constructor is explicit in copy-initialization
return { pos.shift(), newn, ts, tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:1288:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1120:16: error: chosen constructor is explicit in copy-initialization
return { 0, nullptr, new_tail_size, new_tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:108:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_leaf<immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1092:28: error: chosen constructor is explicit in copy-initialization
return { pos.shift(), newn, ts, tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:297:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1120:16: error: chosen constructor is explicit in copy-initialization
return { 0, nullptr, new_tail_size, new_tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:201:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, false>::visit_leaf<immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1092:28: error: chosen constructor is explicit in copy-initialization
return { pos.shift(), newn, ts, tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:1288:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, false>::visit_regular<immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1120:16: error: chosen constructor is explicit in copy-initialization
return { 0, nullptr, new_tail_size, new_tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:108:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, false>::visit_leaf<immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^
In file included from /home/username/tmp/immer/example/vector/vector.cpp:9:
In file included from /home/username/tmp/immer/immer/vector.hpp:11:
In file included from /home/username/tmp/immer/immer/detail/rbts/rbtree.hpp:13:
/home/username/tmp/immer/immer/detail/rbts/operations.hpp:1092:28: error: chosen constructor is explicit in copy-initialization
return { pos.shift(), newn, ts, tail };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/tmp/immer/immer/detail/rbts/position.hpp:297:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, false>::visit_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/detail/rbts/position.hpp:945:25: note: in instantiation of function template specialization 'immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>, true>::visit_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6> > &>' requested here
return Visitor::visit_regular(*this, std::forward<Args>(args)...);
^
/home/username/tmp/immer/immer/vector.hpp:293:20: note: in instantiation of member function 'immer::detail::rbts::rbtree<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
{ return impl_.take(elems); }
^
/home/username/tmp/immer/example/vector/vector.cpp:49:22: note: in instantiation of member function 'immer::vector<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::no_transience_policy, false, true>, 5, 6>::take' requested here
auto v2 = v1.take(3);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
constexpr tuple(_UElements&&... __elements)
^