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

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

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

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

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

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

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

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

или

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

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

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

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

Ответ #1

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

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

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

17
0