По моему мнению, единственная причина существования std::make_pair
и std::make_tuple
заключается в том, что вам не нужно писать типы самостоятельно, поскольку они автоматически выводятся. В С++ 1z мы имеем вывод аргумента шаблона для шаблонов классов, который позволяет просто написать
std::pair p(1, 2.5); // C++1z
вместо
auto p = std::make_pair(1, 2.5); // C++11/14
Ситуация для std::tuple
аналогична. Это приводит к следующему вопросу: в С++ 1z существует ли ситуация, когда полезно использовать std::make_pair
и std::make_tuple
вместо использования конструкторов std::pair
и std::tuple
?
Пожалуйста, рассмотрите только чистый код С++ 1z (т.е. не нужно иметь обратную совместимость с С++ 14) и предположите, что все знакомы с этой функцией С++ 1z.