Size: a a a

Анархическая электроника

2021 January 30

p

pavlick in Анархическая электроника
Serg Sapov
Вот как-то не приходилось писать какие-то конструкторы копирования, ничего не копирую, все по ссылкам передаю или через указатели
Ну может серьезное ничего не писали? Например, пишем либу, и надо чтобы пользователь передал ссылку на объект, нужно запретить передачу временного объекта, сделайте без rvalue:
struct S {
  const int &i;
  S(const S &_i): i(_i) {}
};
int f(const int &i) {
  S(5); // нельзя скомпилировать
  S2(i); // а это нужно
}
Ну и потом - стд контейнеры будут использовать rvalue, косвенно, делая код более производительным.
источник

AK

Andrey Khristov in Анархическая электроника
Yegor Kowalew
Я не радиомеханик. Может поможете?
намекну коротко. если с диодами что-то не так, защита отключает подсветку. поэтому есть смысл сначала проверить диоды. кроме того, желательно под рукой держать схему, там часто указывают напряжения.
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Ну может серьезное ничего не писали? Например, пишем либу, и надо чтобы пользователь передал ссылку на объект, нужно запретить передачу временного объекта, сделайте без rvalue:
struct S {
  const int &i;
  S(const S &_i): i(_i) {}
};
int f(const int &i) {
  S(5); // нельзя скомпилировать
  S2(i); // а это нужно
}
Ну и потом - стд контейнеры будут использовать rvalue, косвенно, делая код более производительным.
Так и использую, в вашем примере нет &&
источник

p

pavlick in Анархическая электроника
Serg Sapov
Так и использую, в вашем примере нет &&
Так код не закончен, это было заданием, это заготовка будет хавать все - что надо и что не надо.
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Ну может серьезное ничего не писали? Например, пишем либу, и надо чтобы пользователь передал ссылку на объект, нужно запретить передачу временного объекта, сделайте без rvalue:
struct S {
  const int &i;
  S(const S &_i): i(_i) {}
};
int f(const int &i) {
  S(5); // нельзя скомпилировать
  S2(i); // а это нужно
}
Ну и потом - стд контейнеры будут использовать rvalue, косвенно, делая код более производительным.
В контейнерах храню указатели, сами объекты там хранить - это его каждый раз создавать
источник

YK

Yegor Kowalew in Анархическая электроника
Andrey Khristov
намекну коротко. если с диодами что-то не так, защита отключает подсветку. поэтому есть смысл сначала проверить диоды. кроме того, желательно под рукой держать схему, там часто указывают напряжения.
я уже вскрыл все. линейка диодов 18В. Притулил питание в 12В, больше не нашел. Не горят ни та ни другая.
питания в 18В не имею
чтоб каждый диод звонить нужно отдирать рассеиватели.
источник

p

pavlick in Анархическая электроника
Serg Sapov
В контейнерах храню указатели, сами объекты там хранить - это его каждый раз создавать
Ну дело хозяйское). А я себе мозг не епу.
источник

AK

Andrey Khristov in Анархическая электроника
Yegor Kowalew
я уже вскрыл все. линейка диодов 18В. Притулил питание в 12В, больше не нашел. Не горят ни та ни другая.
питания в 18В не имею
чтоб каждый диод звонить нужно отдирать рассеиватели.
если у вас нет лабораторника с выходом в 45-50 вольт, заниматься ремонтом светодиодных подсветок не получится. если телевизор дорог, как память - отдайте его на ремонт тем, кто укомплектован и приборами и знаниями.
источник

SS

Serg Sapov in Анархическая электроника
K King
📚 Maya Posch - Hands-On Embedded Programming with C++17 (2019)

C++ is a great choice for embedded development, most notably, because it does not add any bloat, extends maintainability, and offers many advantages over different programming languages. Hands-On Embedded Programming with C++17 will show you how C++ can be used to build robust and concurrent systems that leverage the available hardware resources. Starting with a primer on embedded programming and the latest features of C++17, the book takes you through various facets of good programming.

#books #programming #software#books #programming #software
Хорошая книга для С-шников, там про элементарный С++, про rvalue таv ничего нет
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Ну дело хозяйское). А я себе мозг не епу.
Ну так приведи пример конкретный, а не растекайся мыслью по древу
источник

p

pavlick in Анархическая электроника
Serg Sapov
Ну так приведи пример конкретный, а не растекайся мыслью по древу
Я тебе конкретный написал - допиши код, который я тебе выше написал, не применяй rvalue, запрети принимать конструктору временный объект. Куда конкретней то.
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Я тебе конкретный написал - допиши код, который я тебе выше написал, не применяй rvalue, запрети принимать конструктору временный объект. Куда конкретней то.
Я везде так делаю, даже не подозревая ни о каком rvalue, где там применение rvalue?
источник

p

pavlick in Анархическая электроника
Serg Sapov
Я везде так делаю, даже не подозревая ни о каком rvalue, где там применение rvalue?
Ты не заметил проблемы там? После S(5) ты хранишь ссылку на мертвый объект.
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Ты не заметил проблемы там? После S(5) ты хранишь ссылку на мертвый объект.
Так невозможно сделать S(5), компилятор не даст, надо передать ссылку на объект, а не константу
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Ты не заметил проблемы там? После S(5) ты хранишь ссылку на мертвый объект.
Ты привел пример, где нельзя использовать rvalue, а мне нужен пример, как его использовать
источник

p

pavlick in Анархическая электроника
Serg Sapov
Ты привел пример, где нельзя использовать rvalue, а мне нужен пример, как его использовать
Я привел пример именно тот, где нужен rvalue. Решается поставленная задача так: struct S {
  const int &i;
  S(const int &_i): i(_i) {}
  S(int &&) = delete;
};
void f(const int &i) {
  S s(5); // нельзя скомпилировать
  S s2(i); // а это нужно
}
источник

p

pavlick in Анархическая электроника
Теперь компилятор не пропустит передачу временного объекта в конструктор.
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Теперь компилятор не пропустит передачу временного объекта в конструктор.
Да, это работает, спасибо. Но какой-то синтетический пример, ближе бы к реальности
источник

p

pavlick in Анархическая электроника
Serg Sapov
Да, это работает, спасибо. Но какой-то синтетический пример, ближе бы к реальности
Ничего синтетического, вполне реальный. Например, в boost::asio в примерах есть код, где в acceptor создают примерно так: acceptor(make_strand(io_context)), и уходит это все хозяйство по константной ссылке в конструктор. Если бы в плюсах не было бы rvalue, то пришлось бы копать кучу кода обмазанного шаблонами в попытке разобраться (можно ли так писать вообще или в конкретном коде ошибка), либо автору пришлось писать менее эффективный код с передачей по значению. Если тебе мало - то уже писал - unique_ptr, без rvalue до с++11 была кривая, приводящая к ошибкам поделка auto_ptr, которую сразу обзвали deprecated после нового стандарта (благодаря rvalue и более совершенному unique_ptr).
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Ничего синтетического, вполне реальный. Например, в boost::asio в примерах есть код, где в acceptor создают примерно так: acceptor(make_strand(io_context)), и уходит это все хозяйство по константной ссылке в конструктор. Если бы в плюсах не было бы rvalue, то пришлось бы копать кучу кода обмазанного шаблонами в попытке разобраться (можно ли так писать вообще или в конкретном коде ошибка), либо автору пришлось писать менее эффективный код с передачей по значению. Если тебе мало - то уже писал - unique_ptr, без rvalue до с++11 была кривая, приводящая к ошибкам поделка auto_ptr, которую сразу обзвали deprecated после нового стандарта (благодаря rvalue и более совершенному unique_ptr).
boost и МК понятися несовместимые. Я так понял простого примера с rvalue не увидеть
источник