There are two conflicting constructors in tuple:
template <class ..._Up> tuple(_Up&&...) // Construct from elements. template <class _Tuple> tuple(_Tuple&&) // copy/move constructor.
When the length of the tuple is 1 and the first element is a tuple then we can incorrectly select the copy/move constructor. This patch adds more SFINAE to try and prevent this.
This patch likely needs more work.