C++ Moscow
И вот уже пара дней осталась до нашей первой встречи! Напоминаем, что она пройдет 18 августа (Пт) с 17:30 до 20:00 по адресу Москва, 2-й Донской проезд, д. 9, стр. 3 (оффлайн + онлайн трансляция докладов) Запланированные активности: 1. Бэкенд на плюсах для…
#meetup
Наш митап уже завтра! Успейте зарегистрироваться, если хотите посетить встречу оффлайн — до конца регистрации осталось всего несколько часов!
И, вне зависимости от того, будете ли вы завтра на мероприятии оффлайн, давайте познакомимся.
Расскажите о себе и своем плюсовом опыте в комментариях: учитесь вы или работаете, в какой отрасли применяете плюсы на работе и в быту (hardware, game development, developer tools, прикладное ПО) и сколько уже лет вы с ними знакомы...
Наш митап уже завтра! Успейте зарегистрироваться, если хотите посетить встречу оффлайн — до конца регистрации осталось всего несколько часов!
И, вне зависимости от того, будете ли вы завтра на мероприятии оффлайн, давайте познакомимся.
Расскажите о себе и своем плюсовом опыте в комментариях: учитесь вы или работаете, в какой отрасли применяете плюсы на работе и в быту (hardware, game development, developer tools, прикладное ПО) и сколько уже лет вы с ними знакомы...
Leader-ID
Встреча московского сообщества программистов на C++
Бесплатные мероприятия и коворкинги в вашем городе. Leader-ID помогает работать, учиться и находить единомышленников.
🔥2
C++ Moscow
И вот уже пара дней осталась до нашей первой встречи! Напоминаем, что она пройдет 18 августа (Пт) с 17:30 до 20:00 по адресу Москва, 2-й Донской проезд, д. 9, стр. 3 (оффлайн + онлайн трансляция докладов) Запланированные активности: 1. Бэкенд на плюсах для…
#meetup
Митап стартует уже через три часа и мы ждём всех, кто успел на него зарегистрироваться.
17:30–20:00, Москва, 2-й Донской проезд, д. 9, стр. 3
Все дальнейшие обновления касательно нашей встречи будут публиковаться в комментариях к этому посту.
Так что заходите в наш чат, чтобы ничего не пропустить.
Митап стартует уже через три часа и мы ждём всех, кто успел на него зарегистрироваться.
17:30–20:00, Москва, 2-й Донской проезд, д. 9, стр. 3
Все дальнейшие обновления касательно нашей встречи будут публиковаться в комментариях к этому посту.
Так что заходите в наш чат, чтобы ничего не пропустить.
❤🔥1
Спасибо всем, кто посетил наш первый митап оффлайн и всем, кто ждал трансляции! К сожалению, по техническим причинам ее провести не удалось — однако, в течение недели доклады будут перезаписаны и опубликованы в хорошем качестве на нашем канале.
Не всё получилось идеально, но мы не намерены останавливаться на достигнутом. Мы проанализируем допущенные ошибки, чтобы наш второй митап прошел лучше, интереснее и полезнее (и точно с трансляцией 😉).
Ожидайте анонсов!
Не всё получилось идеально, но мы не намерены останавливаться на достигнутом. Мы проанализируем допущенные ошибки, чтобы наш второй митап прошел лучше, интереснее и полезнее (и точно с трансляцией 😉).
Ожидайте анонсов!
👍8❤🔥1🔥1
Записи докладов с прошедшей встречи теперь доступны на нашем канале!
1. Бэкенд на плюсах для нормальных людей — Данил Сидорук — C++ Moscow №0
2. std::expected. Обработка ошибок в C++ 23 — Илья Быконя — C++ Moscow №0
Кроме того, был размещен в публичный доступ репозиторий с кодом к вопросикам, которые были на прошедшей викторине.
А для быстрой навигации по всему этому добру был создан отдельный репозиторий.
1. Бэкенд на плюсах для нормальных людей — Данил Сидорук — C++ Moscow №0
2. std::expected. Обработка ошибок в C++ 23 — Илья Быконя — C++ Moscow №0
Кроме того, был размещен в публичный доступ репозиторий с кодом к вопросикам, которые были на прошедшей викторине.
А для быстрой навигации по всему этому добру был создан отдельный репозиторий.
👍6❤🔥3
C++ Moscow
Записи докладов с прошедшей встречи теперь доступны на нашем канале! 1. Бэкенд на плюсах для нормальных людей — Данил Сидорук — C++ Moscow №0 2. std::expected. Обработка ошибок в C++ 23 — Илья Быконя — C++ Moscow №0 Кроме того, был размещен в публичный доступ…
Доклады на какие темы вам было бы интересно послушать в следующий раз? Как можно было бы сделать доклады с предыдущей встречи лучше?
Помогите нам стать лучше и сформировать интересную программу для следующей встречи, поделитесь своим мнением через Яндекс.Формы!
Помогите нам стать лучше и сформировать интересную программу для следующей встречи, поделитесь своим мнением через Яндекс.Формы!
👍4❤🔥3
C++ Moscow
#digest Дайджест самых интересных плюсовых видео и статей за прошедшие две недели. Теперь на Хабре :) Читать далее
#digest
Подборка самых интересных новостей и материалов из мира C++ за последние две недели (21 августа 2023 – 3 сентября 2023)
Читать далее на Хабре
Подборка самых интересных новостей и материалов из мира C++ за последние две недели (21 августа 2023 – 3 сентября 2023)
Читать далее на Хабре
Хабр
C++ Дайджест №2 (21 августа 2023 – 3 сентября 2023)
Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели. Приятного чтения! ⚡️️ Новости и релизы What Would Make CLion a Better C and...
🔥5👏2
#digest
Подборка самых интересных новостей и материалов из мира C++ за последние две недели (4 сентября – 17 сентября 2023)
Читать далее на Хабре
Подборка самых интересных новостей и материалов из мира C++ за последние две недели (4 сентября – 17 сентября 2023)
Читать далее на Хабре
🔥2❤🔥1
Каким будет результат работы программы выше?
Anonymous Poll
3%
0
45%
1
37%
Compilation error
16%
Undefined behavior
#quiz #explanation
Обычно вызывает ошибку компиляции, но в данном случае он используется в шаблоне, который нигде в программе не инстанцируется. Так что логично было бы ожидать, что в этом коде все хорошо и он выведет единицу. Однако, согласно C++20 и более ранним стадартам, поведение будет иным:
[temp.res.general#8]
The program is ill-formed, no diagnostic required, if:
— ...
— a hypothetical instantiation of a templated entity immediately following its definition would be ill-formed due to a construct that does not depend on a template parameter...
static_assert(false) не зависит от шаблонных параметров и, если бы мы инстанцировали класс A немедленно после его объявления, он бы всегда вызывал ошибку компиляции (то есть, был ill-formed). Так что наша программа, согласно стандарту C++20, является IFNDR (ill-formed, no diagnostic required) — то есть, ее поведение неопределено.
Но в C++23 формулировки были изменены:
[temp.res.general#6]
The program is ill-formed, no diagnostics required, if:
— ...
— a hypothetical instantiation of a templated entity immediately following its definition would be ill-formed due to a construct (other than a static_assert-declaration that fails) that does not depend on a template parameter
Появилось исключение из правил именно для static_assert, так что в C++23 данный код корректен. На экран будет выведено 1
static_assert(false)[temp.res.general#8]
— ...
— a hypothetical instantiation of a templated entity immediately following its definition would be ill-formed due to a construct that does not depend on a template parameter...
static_assert(false) не зависит от шаблонных параметров и, если бы мы инстанцировали класс A немедленно после его объявления, он бы всегда вызывал ошибку компиляции (то есть, был ill-formed). Так что наша программа, согласно стандарту C++20, является IFNDR (ill-formed, no diagnostic required) — то есть, ее поведение неопределено.
Но в C++23 формулировки были изменены:
The program is ill-formed, no diagnostics required, if:
— ...
— a hypothetical instantiation of a templated entity immediately following its definition would be ill-formed due to a construct (other than a static_assert-declaration that fails) that does not depend on a template parameter
Появилось исключение из правил именно для static_assert, так что в C++23 данный код корректен. На экран будет выведено 1
👍3
#quiz #code
Каким будет результат выполнения программы ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.
Каким будет результат выполнения программы ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.
#include <initializer_list>
#include <iostream>
class C {
public:
C() = default;
C(const C&) { std::cout << 1; }
};
void f(std::initializer_list<C> i) {}
int main() {
C c;
std::initializer_list<C> i{c};
f(i);
f(i);
}🔥2
Каким будет результат работы программы выше?
Anonymous Poll
36%
1
24%
11
30%
111
9%
Compilation error
#quiz #explanation
В данном коде копирование может произойти лишь в трех местах:
1. 2. Первый 3. Второй Так в каких же из них оно происходит? [dcl.init.list] определяет то, как создается следующим образом:
An object of type is constructed from an initializer list as if the implementation generated and materialized a prvalue of type “array of N const E”, where N is the number of elements in the initializer list. Each element of that array is copy-initialized with the corresponding element of the initializer list, and the object is constructed to refer to that array.
То есть, когда мы создаем , создается временный массив объектов типа , инициализируемый копированием. Так что в пункте 1 копирование действительно происходит и на экран выводится .
Далее мы дважды вызываем функцию , принимающую аргумент по значению. Так что для каждого из вызовов делается копия . Вызывает ли это копирование всех его элементов? Нет, так как не владеет своими элементами. Как было сказано в цитате выше, он лишь ссылается на временный массив.
И это дополнительно поясняется в [initializer_list.syn] :
Copying an initializer list does not copy the underlying elements
Ответ: 1
1.
std::initializer_list<C> i{c}
f(i)
f(i)
std::initializer_listAn object of type
std::initializer_list<E>std::initializer_list<E>То есть, когда мы создаем
iC1Далее мы дважды вызываем функцию
fstd::initializer_liststd::initializer_listИ это дополнительно поясняется в
Copying an initializer list does not copy the underlying elements
Ответ: 1
🔥3👏2
#proposals #resources
Каждый месяц комитет по стандартизации C++ (также известный как WG21) публикует свою „переписку“: все предложения (пропозалы) в стандарт за последний месяц, каждое из которых по результатам голосования среди членов WG21 может быть в него включено.
Совсем недавно, например, была опубликована переписка за сентябрь.
Какие пропозалы из нее вам кажутся наиболее интересными или каких полезных фич, по вашему мнению, в этом списке не хватает? Присоединяйтесь к обсуждению в комментариях!
Каждый месяц комитет по стандартизации C++ (также известный как WG21) публикует свою „переписку“: все предложения (пропозалы) в стандарт за последний месяц, каждое из которых по результатам голосования среди членов WG21 может быть в него включено.
Совсем недавно, например, была опубликована переписка за сентябрь.
Какие пропозалы из нее вам кажутся наиболее интересными или каких полезных фич, по вашему мнению, в этом списке не хватает? Присоединяйтесь к обсуждению в комментариях!
🔥2
#quiz #code
Каким будет результат выполнения программы ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.
Каким будет результат выполнения программы ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.
#include <type_traits>
#include <iostream>
using namespace std;
struct X {
int f() const&&{
return 0;
}
};
int main() {
auto ptr = &X::f;
cout << is_same_v<decltype(ptr), int()>
<< is_same_v<decltype(ptr), int(X::*)()>;
}🔥3
#quiz #explanation
Стандарт гласит:
[dcl.fct#8]
The return type, the parameter-type-list, the ref-qualifier, the cv-qualifier-seq, and the exception specification, but not the default arguments, are part of the function type.
То есть, ref-квалификаторы (в нашем случае для ) являются частью типа функции, так что тип это .
Ответ: 00
То есть, ref-квалификаторы (в нашем случае
const&&X::fptrint(X::*)() const&&Ответ: 00
👍2
C++ Moscow
Спасибо всем, кто посетил наш первый митап оффлайн и всем, кто ждал трансляции! К сожалению, по техническим причинам ее провести не удалось — однако, в течение недели доклады будут перезаписаны и опубликованы в хорошем качестве на нашем канале. Не всё получилось…
Работа работой и учеба учебой, но наши организаторы не дремлют и начинают строить более детальные планы на следующий митап..
А каким бы хотели видеть его вы? Поделитесь своими мыслями в комментариях!
А каким бы хотели видеть его вы? Поделитесь своими мыслями в комментариях!
❤🔥5🔥1
#quiz #code
Каким будет результат выполнения программы ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.
Каким будет результат выполнения программы ниже? Делитесь своими мыслями в комментариях! Правильный ответ и его объяснение будут опубликованы в 18:00 по Москве.
#include <iostream>
using namespace std;
template <class T> void f(T) {
static int i = 0;
cout << ++i;
}
int main() {
f(1);
f(1.0);
f(1);
}👍4
Каким будет результат работы программы выше?
Anonymous Poll
12%
123
10%
111
76%
112
5%
Compilation error
#quiz #explanation
Стандарт гласит:
[temp.fct.spec]
Each function template specialization instantiated from a template has its own copy of any static variable.
То есть, каждое инстанцирование имеет свои копии статических переменных. В нашем коде имеется два инстанцирования: для и . Так что первый и третий (но не второй) вызов разделяют между собой одну статическую переменную.
Ответ: 112
То есть, каждое инстанцирование имеет свои копии статических переменных. В нашем коде имеется два инстанцирования: для
T = intT = doublefОтвет: 112
👍5