Один кортеж / пара вкладышей распаковывается в С++ с повторным использованием одной и той же переменной несколько раз

Я уже видел Is there a one-liner to unpack tuple/pair into references? и знаю, как распаковывать значения 9X_std-pair из кортежей/пар в одну строку, как показано 9X_c++ ниже

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");

здесь isFieldPresentAndSet возвращает кортеж.

Теперь я хочу 9X_cpp повторно использовать эти две переменные 9X_c++17 в нескольких последовательных вызовах isFieldPresentAndSet, как 9X_c++1z показано ниже

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");
auto [validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled");

, а затем проверьте значение 9X_c++1z для validity и table. Но это дает мне ошибку компиляции, потому 9X_c++1z что я переопределяю переменную validity и table во второй 9X_cpp раз. Если изменить вторую строку на

[validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled"); 

или

validity, table = isFieldPresentAndSet(r, "gslb_sp_enabled"); 

Это 9X_cpp все еще дает мне ошибку компиляции.

Есть 9X_c++17 ли способ сделать это??

14
0
1
Общее количество ответов: 1

Ответ #1

Ответ на вопрос: Один кортеж / пара вкладышей распаковывается в С++ с повторным использованием одной и той же переменной несколько раз

Вы можете использовать std::tie. Он возвращает кортеж 9X_cxx ссылок, что делает возможным присваивание:

std::tie(validity, table) = isFieldPresentAndSet(r, "gslb_sp_enabled");

17
0