Библиотека C/C++ разработчика | cpp, boost, qt
20.6K subscribers
1.67K photos
44 videos
16 files
3.85K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
⚡️ Фича дня: if consteval в C++23

Хотите разный код для compile-time и runtime? C++23 добавляет if consteval для условной компиляции!


🔴 До: Сложные трюки

template<typename T>
constexpr T compute() {
if (std::is_constant_evaluated()) {
return compile_time_version<T>();
}
return runtime_version<T>();
}



🟢 После: Читаемый consteval

template<typename T>
constexpr T compute() {
if consteval {
return compile_time_version<T>();
} else {
return runtime_version<T>();
}
}



❗️Практические применения:

• Оптимизированные математические библиотеки
• Compile-time криптография
• Генерация lookup-таблиц


💡Используете метапрограммирование в ваших проектах?

Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
June 11
✏️ Промпт дня: Следуй стандартам кода в C++

Если необходимо быстро привести код к определённому стилю, то этом случае можно воспользоваться следующим промптом.


🍴 Промпт для AI-помощника:

Rewrite the code below following the Google style guidelines for C++.

[Вставь свой код]



‼️ Пример использования промпта:

Было:

class userManager{
public:
int getUserCount(){return userCount;}
void setUserCount(int count){userCount=count;}
private:
int userCount;
};

void ProcessUserData(){
const int maxUsers=100;
userManager um;
for(int i=0;i<maxUsers;i++){
um.setUserCount(i);
}
}


Стало (после применения Google C++ Style Guide):

class UserManager {
public:
int GetUserCount() const { return user_count_; }
void SetUserCount(int count) { user_count_ = count; }

private:
int user_count_;
};

void ProcessUserData() {
const int MAX_USERS = 100;
UserManager user_manager;

for (int i = 0; i < MAX_USERS; ++i) {
user_manager.SetUserCount(i);
}
}


Что изменилось:

Функции в CamelCase
Переменные в snake_case
Константы в UPPER_CASE
Правильные отступы и пробелы


⛄️ А каким стилем для кода вы пользуетесь? Пишите в комментариях.

Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
June 12
June 12
June 12
‼️ Hotkey boost: Генерация документации Doxygen одной командой

Проблема: Написание документации для C++ кода — трудоемкий процесс, который разработчики часто откладывают или вовсе пропускают.

Решение: Автоматическая генерация шаблонов документации Doxygen для классов и функций!


Доступно в:

• CLion: /** + Enter перед объявлением функции/класса
• VSCode (с Doxygen Documentation Generator): Ctrl+Alt+D
• Visual Studio: /// + Enter перед функцией


✏️ В CLion:

• Установите курсор перед объявлением функции или класса
• Введите /**
• Нажмите Enter
• IDE автоматически создаст шаблон документации со всеми параметрами.

Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
June 13
June 13
June 13
😱 Завтра цена на курс «AI-агенты для DS» вырастет

Пока вы думаете — другие уже покупают. Что вы теряете, откладывая решение? Как минимум — 10 000 рублей, именно столько вы переплатите завтра. Как максимум — шанс войти в топ-1% дата-сайентистов, которые умеют строить AI-агенты.

🎓 Чему вы научитесь на курсе:
— адаптировать LLM под разные предметные области и данные
— собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
— строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Решение за вами.

👉 Купить курс по старой цене
June 14
June 14
June 15
June 16
🍩 C++ Concepts — типобезопасность на новом уровне


‼️ Проблема:

В шаблонах C++ ошибки типов приводят к критическим сообщениям компилятора на десятки строк. Отладка становится кошмаром, особенно для новичков в команде.


Решение:

C++ Concepts
позволяют явно указать требования к типам шаблонов. Это делает код самодокументируемым и дает понятные сообщения об ошибках.


✏️ Пример кода:
#include <concepts>

// Определяем концепт для числовых типов
template<typename T>
concept Numeric = std::integral<T> || std::floating_point<T>;

// Функция принимает только числовые типы
template<Numeric T>
T multiply(T a, T b) {
return a * b;
}

int main() {
auto result1 = multiply(5, 10); // OK: int
auto result2 = multiply(3.14, 2.0); // OK: double
// auto result3 = multiply("hello", "world"); // Ошибка компиляции с понятным сообщением
return 0;
}



🌳 Преимущества:

• Понятные сообщения об ошибках компиляции
• Самодокументируемый код с явными требованиями к типам
• Улучшенная производительность компиляции за счет раннего отсева неподходящих типов
• Возможность перегрузки функций на основе концептов

Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
June 17