To me a pair is just special case of a tuple, but following surprises me:
pair
tuple
pair p1(1, 2); // ok tuple
The tuple constructor you're trying to call is explicit, so copy-list-initialization will fail. The corresponding pair constructor is not explicit.
explicit
Change your code to
tuple t2{1, 2};
and it'll compile.