- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
#include <iostream>
#include <tuple>
using namespace std;
int main() {
int a = 5, b = 6;
tie(a, b) = make_pair(b, a);
cout << a << " " << b << endl;
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
#include <iostream>
#include <tuple>
using namespace std;
int main() {
int a = 5, b = 6;
tie(a, b) = make_pair(b, a);
cout << a << " " << b << endl;
return 0;
}
https://ideone.com/9gzogv
Поэтому я за "svn". Там такой хуйни нет.
make_tuple, так типы явно выписывать не надо. Впрочем, говорят, скоро можно будет писать просто tuple(c, a, b).
уже https://en.cppreference.com/w/cpp/utility/tuple/deduction_guides
Потому что
https://en.cppreference.com/w/cpp/language/class_template_argument_deduction#User-defined_deduction_guides
Офигенная же тема для компараторов
P.S. Я за "OCaml" и, конечно, "Common Lisp"
Так нечестно, там a и b - это не те a и b... Там ведь в каждом let cвоя область видимости, правильно?
Вот в питоне можно
Ну a и b не модифицируются inplace, разумеется, просто локально переименовываются. Я бы сказал, что это фича. Каждый let видит предыдущее окружение в правых частях присваиваний.
Вот в хацкеле это бы круто зациклилось, там можно написать
let (a, b) = (b, a) in printf "a = %d, b = %d\n" a b
и долго наблюдать, как ничего не происходит.
или
или
?
http://govnokod.ru/25007#comment436442