This code compiles но мне интересно, какая версия должна быть предпочтительнее:станд :: галстук против станд :: make_tuple
#include <iostream>
#include <tuple>
using namespace std;
tuple<int, int, int> return_tuple1() {
int a = 33;
int b = 22;
int c = 31;
return tie(a, b, c);
}
tuple<int, int, int> return_tuple2() {
int a = 33;
int b = 22;
int c = 31;
return make_tuple(a, b, c);
}
int main() {
auto a = return_tuple1();
auto b = return_tuple2();
return 0;
}
поскольку функция возвращает кортеж по значению не должно быть никаких проблем в использовании std::tie
правильно? (т. е. никаких оборванных ссылок)
Также 'станд :: make_tuple' лучше выражает намерение кода. Если бы я увидел этот код, вызывающий 'std :: tie', а затем сохраняя его в' tuple', я бы подумал, что это ошибка. – SirGuy