Size: a a a

2020 April 02

CD

Constantine Drozdov in pro.cxx
Ломать эту форму binding быстро решительно
источник

AP

Antony Polukhin in pro.cxx
А вот ХЗ. Правила менялись между стандартами C++
источник

AD

Andrey Davydov in pro.cxx
Antony Polukhin
Усложним задачу:
auto [a] = B{42}; // Скомпилируется?
auto [a] = B{{}, 42}; // Скомпилируется?
auto [a,b] = B{42}; // Скомпилируется?
auto [a,b] = B{{}, 42}; // Скомпилируется?
1) Что именно написано в {} после B не имеет отношения, к тому, сколько компонентов должен иметь structured binding.
2) Для B он должен иметь 1 компонент.
3) Да, в C++20 разрешили писать B{42} опуская инициализатор для пустой базы, но какое отношение это имеет к structured bindings?
Т.е. я не очень понимаю, как этот пример доказывает, что агрегаты с базами это плохо? Я и без наследования могу сделать так, что число structured binding компонент не совпадает с числом аргументов в {} при инициализации (причем может быть как больше так и меньше):
struct XY { int x, y; };

struct P1 {
   int x, y, z;
};

struct P2 {
   XY xy;
   int z;
};

auto [x1, y1, z1] = P1 { 1, 2 };
auto [x2, y2]     = P2 { 1, 2, 3 };
источник

CD

Constantine Drozdov in pro.cxx
Andrey Davydov
1) Что именно написано в {} после B не имеет отношения, к тому, сколько компонентов должен иметь structured binding.
2) Для B он должен иметь 1 компонент.
3) Да, в C++20 разрешили писать B{42} опуская инициализатор для пустой базы, но какое отношение это имеет к structured bindings?
Т.е. я не очень понимаю, как этот пример доказывает, что агрегаты с базами это плохо? Я и без наследования могу сделать так, что число structured binding компонент не совпадает с числом аргументов в {} при инициализации (причем может быть как больше так и меньше):
struct XY { int x, y; };

struct P1 {
   int x, y, z;
};

struct P2 {
   XY xy;
   int z;
};

auto [x1, y1, z1] = P1 { 1, 2 };
auto [x2, y2]     = P2 { 1, 2, 3 };
Не соответствовать структуре класса - плохо
источник

CD

Constantine Drozdov in pro.cxx
В качестве костыля предложил бы синтаксис { .=, } и [ .=, ] если старая поэлементная форма кому-то нужна
источник

CD

Constantine Drozdov in pro.cxx
И да, мне прекрасно известно, что в языке С структуры полностью определяются списком их данных
источник

AD

Andrey Davydov in pro.cxx
Constantine Drozdov
Не соответствовать структуре класса - плохо
кому плохо — не пишите, а кому-то кажется, что плохо писать пустые {} там где компилятор может догадаться, что они лишние
источник

CD

Constantine Drozdov in pro.cxx
Andrey Davydov
кому плохо — не пишите, а кому-то кажется, что плохо писать пустые {} там где компилятор может догадаться, что они лишние
Ну вот специально для вас пример
struct A { int x = 0; int y = 0; };
struct B { int x = 0; int y = 0; };
struct C { A a; B b; int c; }; //всегда инициализируется
C{ {}, 0, 0 }; //имелось в виду C{ {}, {}, 0 };
источник

CD

Constantine Drozdov in pro.cxx
Я не готов утверждать на 100%, что это получилось из-за изменения типа b с int на B
источник

AD

Andrey Davydov in pro.cxx
Constantine Drozdov
Ну вот специально для вас пример
struct A { int x = 0; int y = 0; };
struct B { int x = 0; int y = 0; };
struct C { A a; B b; int c; }; //всегда инициализируется
C{ {}, 0, 0 }; //имелось в виду C{ {}, {}, 0 };
у меня есть инструмент, чтобы понять что тут происходит :)) https://imgur.com/a/IepUVEE
источник

CD

Constantine Drozdov in pro.cxx
Andrey Davydov
у меня есть инструмент, чтобы понять что тут происходит :)) https://imgur.com/a/IepUVEE
в реальном примере он бы три экрана написал :)
источник

CD

Constantine Drozdov in pro.cxx
да, это структуры внутри test()
источник

PK

Pavel Kazakov in pro.cxx
в этом чате, плиз: https://t.me/joinchat/BYlFbEPe5gMPVQm3OwKjaA
источник

N

NULL in pro.cxx
ок, спс
источник

J

Jefferson in pro.cxx
Чё-то заорал с фейк-анкет и накрученных подписчиков
источник

J

Jefferson in pro.cxx
Подскажите, есть ли аналог memcpy, который не перезаписывает в копируемый буфер?
источник

J

Jefferson in pro.cxx
Как strcat, только с памятью в общем
источник

q

qwert in pro.cxx
Чем можно распарсить данные, по синтаксису похожие на json? (если без велосипедов)
структура примерно
Obj "name"
{
    Data1 data1
    Data2 data2
   
    DataObj "name"
    {
         Data1 data1
    }
}
источник

ПК

Побитый Кирпич in pro.cxx
Jefferson
Подскажите, есть ли аналог memcpy, который не перезаписывает в копируемый буфер?
memcpy не перезаписывает копируемый буффер
источник

J

Jefferson in pro.cxx
Не правильно выразился, конечный буфер
источник