История изменений
Исправление
vertexua,
(текущая версия)
:
Вся драма из-за вот этого?
#include <optional>
#include <iostream>
int main (int, char*[]) {
int x = 5;
int y = 24;
std::optional<int&> opt = x;
opt = y;
std::cout << "x is " << x << std::endl;
std::cout << "y is " << y << std::endl;
return 0;
}
Никто не может понять какая переменная все-таки окажется в opt.
Кажется магии слишком много, могли бы более явно сделать работу с этим optional
fn main() {
let mut x = 10;
let mut y = 20;
let mut opt = Some(&mut x);
println!("{:?}", opt);
opt = Some(&mut y);
println!("{:?}", opt);
if let Some(y_ref) = opt {
*y_ref = 30;
}
println!("{:?}", y);
}
Если говорить все же в рамках C++ и если не указывать явно some
, то я наверное за rebind
вместо assign-through
. Но все же я вот с ними
with a handful of folks saying “neither, everything should be explicit”
Исправление
vertexua,
:
Вся драма из-за вот этого?
#include <optional>
#include <iostream>
int main (int, char*[]) {
int x = 5;
int y = 24;
std::optional<int&> opt = x;
opt = y;
std::cout << "x is " << x << std::endl;
std::cout << "y is " << y << std::endl;
return 0;
}
Никто не может понять какая переменная все-таки окажется в opt.
Кажется магии слишком много, могли бы более явно сделать работу с этим optional
fn main() {
let mut x = 10;
let mut y = 20;
let mut opt = Some(&mut x);
println!("{:?}", opt);
opt = Some(&mut y);
println!("{:?}", opt);
if let Some(y_ref) = opt {
*y_ref = 30;
}
println!("{:?}", y);
}
Если говорить все же в рамках C++ и если не указывать явно some
, то я наверное за rebind
вместо assign-through
Исходная версия
vertexua,
:
Вся драма из-за вот этого?
#include <optional>
#include <iostream>
int main (int, char*[]) {
int x = 5;
int y = 24;
std::optional<int&> opt = x;
opt = y;
std::cout << "x is " << x << std::endl;
std::cout << "y is " << y << std::endl;
return 0;
}
Никто не может понять какая переменная все-таки окажется в opt.
Кажется магии слишком много, могли бы более явно сделать работу с этим optional
fn main() {
let mut x = 10;
let mut y = 20;
let mut opt = Some(&mut x);
println!("{:?}", opt);
opt = Some(&mut y);
println!("{:?}", opt);
if let Some(y_ref) = opt {
*y_ref = 30;
}
println!("{:?}", y);
}