LINUX.ORG.RU

История изменений

Исправление 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);
}