1. Интересный факт, что вот такой код является корректным:
void f() {
constexpr const MyType& var = some_global_var;
}Подробнее, как и почему это работает, можно посмотреть в докладе Как объявить константу в C++?
2. Давайте посмотрим на такой код:
int a[] = {1, 2, 3, 4, 5};struct A {
int a[] = {1, 2, 3, 4, 5};
};Первое объявление переменной скомпилируется, а структура нет. Компилятор не справится вывести размер для
int a[], т.к. у вас могут быть разные конструкторы, из которых размер выведется другой. Вот такой код выведет размер 5 для массива a:struct B {
B() : a{1,2,3,4,5} {}
int a[];
};Если же в структуре
A сделать a static inline, то всё чинится (понятно почему). Где такое может сыграть роль? На уровне повыше:class Type {
std::vector v{1, 2, 3, 4, 5};
};Такое тоже не компилируется, но уже из-за того, что не работает CTAD (примерно по тем же причинам).
3. У знакомого (@KonstantinTomashevich) обнаружился блог про геймдев и C++. Если вам интересна специфика этой области, можно следить за новыми постами на канале.
Я в целом не поклонник геймдева (может как-нибудь расскажу в @dzikart), но какие-то технические моменты были интересны и познавательны.
4. Очень забавный видос (всего 7 минут) про неожиданные забавные конструкции в C++.
5. Хватит ссылаться на TIOBE.
6. В конце зимы узнал про escape analysis в go и всё хотел написать про это пост, но непонятно зачем, если есть хорошая статья.
7. Вкинул полмысли про рабочее время.