В Rust мне сразу понравилась возможность присваивать переменным результат оператора
fn main() {
let someFlag = false;
let value = if someFlag {
-1
} else {
1
};
io::println(fmt!("value == %d", value))
}
let someFlag = false;
let value = if someFlag {
-1
} else {
1
};
io::println(fmt!("value == %d", value))
}
В случае же с C++, для того что бы инициализировать константную переменную приходилось вводить дополнительную функцию или, что чаще, плевать на константность и обходиться обычной переменной. Ну а с C++11 данная проблема решается куда проще
int main() {
bool someFlag = false;
const auto value = [&]{
if(someFlag)
return -1;
else
return 1;
} ();
std::cout << "value == " << value << std::endl;
return 0;
}
bool someFlag = false;
const auto value = [&]{
if(someFlag)
return -1;
else
return 1;
} ();
std::cout << "value == " << value << std::endl;
return 0;
}
Ну и конечно не забываем про то, что это C++11
> clang++ -std=c++11 test.cpp
P.S. подсмотренно у Саттера.
#include
int main()
{
int const a = 10;
bool const f = false;
int const i = f? (a + 1): (a – 1);
std::cout << i << std::endl;
return 0;
}
А если кода относительно много?