Size: a a a

2020 June 23

AT

Andrew Titov in pro.cxx
/dev/urandon ¯\_(ツ)_/¯
Где-то в углу плачет std::reference_wrapper
Пусть плачет дальше. :)

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

OS

Oleksandr Senkovych in pro.cxx
Anatoly Tomilov
struct { void operator () () const {} } f; вот тоже не надо)
а если надо с шаблонными параметрами?
источник

AT

Anatoly Tomilov in pro.cxx
с шаблонными параметрами в локальном скоупе нельзя, это да.
источник

В

Владимир in pro.cxx
Oleksandr Senkovych
а если надо с шаблонными параметрами?
Template<...> void operator()() так.
источник

AT

Anatoly Tomilov in pro.cxx
Владимир
Template<...> void operator()() так.
нет. Придётся лезть в скоуп выше, чтобы определить шаблонную структуру или структуру с чем-то шаблонным внутри.
источник

AT

Anatoly Tomilov in pro.cxx
Читаться это будет хуже, т.к. далеко от места (единственного) использования
источник

OS

Oleksandr Senkovych in pro.cxx
Anatoly Tomilov
Читаться это будет хуже, т.к. далеко от места (единственного) использования
как будто до этого оно читалось хорошо гг
источник

В

Владимир in pro.cxx
Anatoly Tomilov
нет. Придётся лезть в скоуп выше, чтобы определить шаблонную структуру или структуру с чем-то шаблонным внутри.
Само собой такое без конструктора не сработает.
источник

AT

Anatoly Tomilov in pro.cxx
Oleksandr Senkovych
как будто до этого оно читалось хорошо гг
вы имеете ввиду из-за многословности?
источник

AT

Anatoly Tomilov in pro.cxx
Владимир
Само собой такое без конструктора не сработает.
при чём здесь конструктор?
источник

OS

Oleksandr Senkovych in pro.cxx
Anatoly Tomilov
вы имеете ввиду из-за многословности?
в лямбде ты пишешь только тело operator() по сравнению с анонимной структурой, где оно будет расти с каждым новым data-member'ом и где нужно постоянно писать полный тип
источник

AT

Anatoly Tomilov in pro.cxx
единственное в чём лямбда проигрывает — это в красоте синтаксиса, которым обеспечивается рекурсия. Для структуры всё тривиально struct { void operator () () { operator (); } } f;, а для лямбды нужно делать сложно и многословно auto f = [] (const auto & f) -> void { f(f); }; f(f);
источник

В

Владимир in pro.cxx
Anatoly Tomilov
при чём здесь конструктор?
Что бы можно было явно инстанцоровать без угловых скобок. Хотя вот пример и без этого.struct scale_sums { scale_sums(std::ostream& s) : out(s) {} template<typename T> void operator()(boost::mpl::identity<T>) const { static T a; static const T alpha; out <<"Partial sum = " <<std::endl; } private: std::ostream& out; };
источник

AT

Anatoly Tomilov in pro.cxx
да нет же. Речь про то, что нельзя сделать вот так: void f() { template<typename> struct S {}; } или void f() { struct S { template<typename> void g() {} };. Только и всего. Речь не про вывод шаблонных параметров и т.п.
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
Serg
если placement new, то зачем calloc()?, и malloc() достаточно
calloc становится почти бесполезным
Не, ну почему..
new(malloc(sizeof(T)) T
источник

В

Владимир in pro.cxx
Anatoly Tomilov
да нет же. Речь про то, что нельзя сделать вот так: void f() { template<typename> struct S {}; } или void f() { struct S { template<typename> void g() {} };. Только и всего. Речь не про вывод шаблонных параметров и т.п.
Аа, понял.
источник

В

Владимир in pro.cxx
Anatoly Tomilov
да нет же. Речь про то, что нельзя сделать вот так: void f() { template<typename> struct S {}; } или void f() { struct S { template<typename> void g() {} };. Только и всего. Речь не про вывод шаблонных параметров и т.п.
К таким конструкциям даже воображение не приводило, тут только намспейсы помогут))) хотя всегда можно создать функтор структуру с вложенной структурой.
источник

AT

Anatoly Tomilov in pro.cxx
Владимир
К таким конструкциям даже воображение не приводило, тут только намспейсы помогут))) хотя всегда можно создать функтор структуру с вложенной структурой.
хотя всегда можно создать функтор структуру с вложенной структурой видимо я не могу донести мысль. Не вижу связи с написанным выше
источник

В

Владимир in pro.cxx
Anatoly Tomilov
хотя всегда можно создать функтор структуру с вложенной структурой видимо я не могу донести мысль. Не вижу связи с написанным выше
Странно, по мне все тривиально, тогда проехали .
источник

ПК

Побитый Кирпич... in pro.cxx
Владимир
Дело вкуса, мне больше логически правильная запись с биндами, где все по полочкам.
Бинды лучше лямбд только для бинда первых параметров, для чего в с++20 сделали bind_front, сам bind считай deprecated уже.
источник