Ответ
Да, безусловно. В контексте C++ я постоянно изучаю новые стандарты языка и современные идиомы. Например, при переходе с C++11 на более новые стандарты я активно применял move-семантику, std::optional и std::variant для более выразительного и безопасного кода.
Сейчас я изучаю возможности C++20/23, такие как std::format для типобезопасного форматирования строк и корутины для асинхронных операций. Вот пример использования std::expected (C++23) для обработки ошибок вместо исключений или кодов возврата в некоторых сценариях:
#include <expected>
#include <string>
#include <iostream>
std::expected<int, std::string> safe_divide(int numerator, int denominator) {
if (denominator == 0) {
return std::unexpected("Division by zero error");
}
return numerator / denominator;
}
int main() {
auto result = safe_divide(10, 2);
if (result) {
std::cout << "Result: " << *result << 'n';
} else {
std::cerr << "Error: " << result.error() << 'n';
}
return 0;
}
Я также готов углубляться в смежные области, такие как профилирование с Perf/Valgrind, изучение новых инструментов сборки (CMake, Conan) или embedded-платформ, если это потребуется для проекта.
Ответ 18+ 🔞
А, ну это ж про то, как язык развивается, да? Ну слушай, тут история такая. Я, конечно, не какой-нибудь там пизда рулю, который на одном стандарте застрял, как будто на дворе 2002-й год. Я постоянно эту документацию читаю, новые штуки пробую, чтобы код не выглядел, как будто его писал какой-то полупидор на коленке.
Вот, например, когда все с C++11 на более новые версии переползали, я сразу вник в эту всю движуху с move-семантикой. Ну, ёпта, реально удобно стало, когда понял, как это работает, а не просто std::move туда-сюда тыкать, как мартышлюшка. И эти std::optional с std::variant — просто песня, блядь. Раньше-то приходилось или nullptr городить, или свои костыли из union и флагов пилить — пиздопроебибна получалась, а не код. А сейчас — чистая выразительность и безопасность, хоть и доверия ебать ноль к этой стандартной библиотеке иногда бывает, но в целом — огонь.
Сейчас вот в C++20/23 уткнулся. Там, например, std::format появился. Ну наконец-то, ебать мои старые костыли! Можно забыть про этот ад с printf и iostream, где вечно тип не тот подсунешь и потом три часа ищешь, почему всё падает. Теперь всё типобезопасно, красиво. И корутины эти... Ну, это, конечно, ещё та тема, мозг выносит конкретно, но для асинхронщины — мощный инструмент, если, конечно, не накосячить.
Вот, смотри, недавно баловался с std::expected из C++23. Штука, в принципе, годная, чтобы ошибки обрабатывать без этих вечных исключений, которые все ненавидят, или кодов возврата, которые вечно забываешь проверить. Выглядит вроде прилично.
#include <expected>
#include <string>
#include <iostream>
std::expected<int, std::string> safe_divide(int numerator, int denominator) {
if (denominator == 0) {
return std::unexpected("Division by zero error");
}
return numerator / denominator;
}
int main() {
auto result = safe_divide(10, 2);
if (result) {
std::cout << "Result: " << *result << 'n';
} else {
std::cerr << "Error: " << result.error() << 'n';
}
return 0;
}
Честно? Пока не ясно, приживётся ли это повсеместно или так, эксперимент очередной. Но пробовать надо, а то так и останешься хитрой жопой, которая боится нового.
И вообще, я не только в синтаксис тыкаюсь. Если проект потребует — я и в смежные дебри полезу. Профилирование с помощью Perf или Valgrind? Да без проблем, найду, где память течёт или процессор жрёт, как не в себя. Новые системы сборки на CMake? Разберусь, даже если там документация написана так, что волнение ебать. Или вот embedded-платформы... Ну, это, конечно, отдельный вид боли, где отлаживаться — одно мучение, но если надо — значит надо. Главное — не стоять на месте, а то сгниешь нахуй, как тот Фарлаф из сказки, который только на объёбке и проехать хотел.