Один кортеж / пара вкладышей распаковывается в С++ с повторным использованием одной и той же переменной несколько раз
Я уже видел 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 ли способ сделать это??
Ответ #1
Ответ на вопрос: Один кортеж / пара вкладышей распаковывается в С++ с повторным использованием одной и той же переменной несколько раз
Вы можете использовать std::tie
. Он возвращает кортеж 9X_cxx ссылок, что делает возможным присваивание:
std::tie(validity, table) = isFieldPresentAndSet(r, "gslb_sp_enabled");
-
4
-
1
-
10
-
4
-
4
-
3
-
6
-
4
-
8
-
6
-
5
-
9
-
2
-
1
-
6
-
6
-
6
-
7
-
3
-
2
-
3
-
3
-
8
-
1
-
1
-
2
-
3
-
1
-
1
-
3
-
3
-
4
-
2
-
1
-
3
-
1
-
3
-
1
-
29
-
14
-
15
-
6
-
3
-
4
-
2
-
2
-
5
-
23
-
5
-
1