Во многих проектах отключают exceptions и rrti, например Google C++ Style Guide явно про это говорит, и по ссылке описываются за/против.
Этож std::optional с множественными if на стороне вызова который заполняет happy-path - бойлерплейтом проверки ошибок.
Ты и в Си также руками пишешь, ```FILE* fp = fopen(..); if (fp != NULL)...````
Кстати, отказ от эксепшенов приводит к тому, что RAII перестаёт нормально работать и появляются всякие 2ух этапные конструирования и IsValid().
Ты имел ввиду, что без эксепшенов нет возможности из конструкторов сообщить, что произошла ошибка? Вообще хорошая манера делать конструкторы noexcept, а конструировать отдельной функцией типа std::optional<Something> MakeSomething(args), которая и вызовет приватный конструктор типа Something.
При описании модели данных, часто приходится создавать новые типы, в первую очередь, используя такие ключевые слова как class/struct/record ... using Timestamp = int64_t;
Настоящие герои пишут enum class Timestamp : int64_t, ещё и когда складывать начнёшь, то тебе компилятор по рукам надаёт.
Да и std::expected я бы в рабочий проект пока не потащил бы, так как поддерживается еще не всеми компиляторами.
std::expect ещё долго сомневался, стать ли ему стандартом в C++23, а мы уже давно использовали реализацию от TartanLlama Пользуясь случаем, добавлю, что ещё мы fmtlib так тащим, потому что std::format сосёт. Ещё мы тащим chrono которого недопилили в C++20. Я уже говорил про std::ranges? А вообще, я зол на них, что C++20 модули завезли только в VC++.
в С++ компилятор конечно постарается, но во первых вы добавляете лишние конвертации, во вторых запрещаете много где RVO, про то что вы из примитивных типов делаете не примитивные и во что это выльется для регистров и прочего промолчу
RVO идёт лесом из-за возврата std::expect, вместо конкретного типа?
Dart? Язык немного взлетает только благодаря Flutter. Отвечу сюда, потому что для C++ такое нагромождение шаблонной магии ещё как-то можно оправдать, но Dart, как замена JS, там порог вхождения в отрасль чуть ниже, так что вы их только напугаете.
Гадаю по фотографии, делаю кодревью, дорого. Один файл, и только сегодня, бесплатно. Рандом сказал read.cpp.
Макросы - зло, USERVER_NAMESPACE_BEGIN, UASSERT. У Вас современный C++, есть и static_assert, и if costexpr.
boost::filesystem::path - уже в C++17 появился , пожалуйста не тащите буст, когда можно без него.
Первая функция принимает const boost::filesystem::path& path, вторая std::string_view path - пожалуйста, определитесь, то у Вас path, а иначе c++ implicit conversion это зло.
m68k-palmos-g++ -v в студию, а то такое ощущение, что там даже -std=c++11 не будет, а это меня сильно ограничивает. Минимум c++14 хотелось бы, таковое многие библиотеки требуют, но оптимально c++17, конечно.
Когда под словом программист понималось Lisp, Fortran, Pascal, C/C++ (причём плюсовая шаблонная магия была уделом экспертов), тогда было логично писать для устройства как можно ближе к "железу", потому что у нас ресурсов мало, у нас батарейку надо пожалеть, и компилировали сразу в бинарный вид для исполнения на целевом железе, и без накладных расходов, в виде GC.
Но рынок диктовал свой ритм, Time To Market (TTM), и Web был тому двигателем. Надо было делать много приложений, и разработчики должны были быть дешёвыми. Ни о каком C/C++ и речи не идёт.
Кстати, что случилось, почему телефоны на Firefox, где всё просто webview? Если вы не умеете писать на C/C++, а только на этих HTML/CSS/JS, то вот вам решение.
на работе раст пока не случился, придётся практиковаться на пет-проектах
на рынке пока мало вакансий на раст, надо подождать ещё, взлетит/не взлетит
новые стандарты C++ продлевают ему жизнь и не позволяют совсем выкинуть из индустрии высоконагруженных серверов, встроенных систем, игр, т.д.
сложно в голове удерживать синтаксис, а главное дизайн-паттерны сразу нескольких языков, например, C++, Golang, Python, и если на каком-нибудь не пишешь, скажем, 3 месяца, то теряется навык
Сорян за оффтоп, но к двум левым симкам тут ещё нужен абонемент тесты на венерические делать раз в месяц хотя бы.
Во многих проектах отключают exceptions и rrti, например Google C++ Style Guide явно про это говорит, и по ссылке описываются за/против.
Ты и в Си также руками пишешь, ```FILE* fp = fopen(..); if (fp != NULL)...````
Ты имел ввиду, что без эксепшенов нет возможности из конструкторов сообщить, что произошла ошибка? Вообще хорошая манера делать конструкторы noexcept, а конструировать отдельной функцией типа
std::optional<Something> MakeSomething(args)
, которая и вызовет приватный конструктор типа Something.Настоящие сварщики на C++20 пишут
std::chrono::local_seconds
, ещё чтобы и без таймзон.Настоящие герои пишут
enum class Timestamp : int64_t
, ещё и когда складывать начнёшь, то тебе компилятор по рукам надаёт.std::expect ещё долго сомневался, стать ли ему стандартом в C++23, а мы уже давно использовали реализацию от TartanLlama
Пользуясь случаем, добавлю, что ещё мы fmtlib так тащим, потому что std::format сосёт.
Ещё мы тащим chrono которого недопилили в C++20.
Я уже говорил про std::ranges?
А вообще, я зол на них, что C++20 модули завезли только в VC++.
RVO идёт лесом из-за возврата std::expect, вместо конкретного типа?
Dart? Язык немного взлетает только благодаря Flutter.
Отвечу сюда, потому что для C++ такое нагромождение шаблонной магии ещё как-то можно оправдать, но Dart, как замена JS, там порог вхождения в отрасль чуть ниже, так что вы их только напугаете.
Наверное тут имелось ввиду
requires
из c++20Я бы в стиле C++библиотеки назвал
typename Tag::value_type
Скайнет уже среди нас.
Там как-то странно, IsHiddenFile() реагирует не только на ".", но и на "..", вроде как это надо было в другом месте отфильтровать бы.
Гадаю по фотографии, делаю кодревью, дорого. Один файл, и только сегодня, бесплатно. Рандом сказал read.cpp.Макросы - зло, USERVER_NAMESPACE_BEGIN, UASSERT. У Вас современный C++, есть и static_assert, и if costexpr.
boost::filesystem::path - уже в C++17 появился , пожалуйста не тащите буст, когда можно без него.
Первая функция принимает const boost::filesystem::path& path, вторая std::string_view path - пожалуйста, определитесь, то у Вас path, а иначе c++ implicit conversion это зло.
Nit:
не будем тратить Ваше время~Уже захотелось прислать патч для cmake, чтобы он из-коробки умел .prc цель делать.
m68k-palmos-g++ -v
в студию, а то такое ощущение, что там даже-std=c++11
не будет, а это меня сильно ограничивает. Минимум c++14 хотелось бы, таковое многие библиотеки требуют, но оптимально c++17, конечно.Когда под словом программист понималось
Lisp, Fortran, Pascal, C/C++ (причём плюсовая шаблонная магия была уделом экспертов), тогда было логично писать для устройства как можно ближе к "железу", потому что у нас ресурсов мало, у нас батарейку надо пожалеть, и компилировали сразу в бинарный вид для исполнения на целевом железе, и без накладных расходов, в виде GC.Но рынок диктовал свой ритм, Time To Market (TTM), и Web был тому двигателем. Надо было делать много приложений, и разработчики должны были быть дешёвыми. Ни о каком C/C++ и речи не идёт.
Кстати, что случилось, почему телефоны на Firefox, где всё просто webview? Если вы не умеете писать на C/C++, а только на этих HTML/CSS/JS, то вот вам решение.
Там в оригинале на Лурке 95% населения — идиоты
Я начал верить, что синтаксис Питона, и компиляция и скорость как плюсы, когда только появился Shed Skin.
Наверное тут нужно либо stdout указать, либо putchar использовать.
Наигрались в наследование в C++ и Java, так было "модно" в конце 90х и нулевых. Сегодня модно полиморфизм, но без наследования, также и в Golang.
Мне лично мешает перейти на раст следующие пункты
на работе раст пока не случился, придётся практиковаться на пет-проектах
на рынке пока мало вакансий на раст, надо подождать ещё, взлетит/не взлетит
новые стандарты C++ продлевают ему жизнь и не позволяют совсем выкинуть из индустрии высоконагруженных серверов, встроенных систем, игр, т.д.
сложно в голове удерживать синтаксис, а главное дизайн-паттерны сразу нескольких языков, например, C++, Golang, Python, и если на каком-нибудь не пишешь, скажем, 3 месяца, то теряется навык