Size: a a a

2020 June 03

Ct

Casual tears in pro.cxx
https://godbolt.org/z/Nk5Jjz
С какой радости clang так классно оптимизирует?
источник

m

magras in pro.cxx
Alex
Блин. Значит, нет никакого способа сделать std::vector на стеке, который можно было бы передавать по значению (хотя бы мувать), кроме как выделить сам monotonic_buffer_resource динамически? Иронично.
А что мешает взять ссылку на буфер?
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alex
Блин. Значит, нет никакого способа сделать std::vector на стеке, который можно было бы передавать по значению (хотя бы мувать), кроме как выделить сам monotonic_buffer_resource динамически? Иронично.
Мув предполагает передачу владения в том числе памятью. Стек нельзя мувать между функциями
источник

A

Alex in pro.cxx
magras
А что мешает взять ссылку на буфер?
Так он же локальный
источник

SK

Stas Koynov in pro.cxx
Casual tears
https://godbolt.org/z/Nk5Jjz
С какой радости clang так классно оптимизирует?
потому что он видит что все понуля
источник

A

Alex in pro.cxx
Artöm Bakri Al-Sarmini
Мув предполагает передачу владения в том числе памятью. Стек нельзя мувать между функциями
a std::array можно
источник

DF

Dollar Føølish in pro.cxx
оно его копирует
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alex
a std::array можно
Мув массива мувает его элементы, не вижу противоречия
источник

Ct

Casual tears in pro.cxx
Stas Koynov
потому что он видит что все понуля
Как он видит? Что мне мешает сделать IntVector v = { new int[10], 0, 10 } v.push_back(42) ?
источник

SK

Stas Koynov in pro.cxx
ну он этого не видит
источник

Ct

Casual tears in pro.cxx
Stas Koynov
ну он этого не видит
Конечно не видит, это в другом translation unit'е происходит
источник

Ct

Casual tears in pro.cxx
Он и не может видеть без lto
источник

CD

Constantine Drozdov in pro.cxx
Casual tears
https://godbolt.org/z/Nk5Jjz
С какой радости clang так классно оптимизирует?
потому что unreachable потому что bool в возвращаемом значении без return?
источник

Ct

Casual tears in pro.cxx
Constantine Drozdov
потому что unreachable потому что bool в возвращаемом значении без return?
тьфу
источник

Ct

Casual tears in pro.cxx
Ох уж этот С++, спасибо.
источник

A

Alex in pro.cxx
Dollar Føølish
оно его копирует
Логично. Пусть бы и memory_resource копировался (точнее, его статический буфер). Можно написать обёртку, но опять плохо продуманный стандарт заставляет изобретать велосипед.
источник

DF

Dollar Føølish in pro.cxx
но элементы мувает )) Артем правильно сказал
источник

DF

Dollar Føølish in pro.cxx
я прошляпил
источник

m

magras in pro.cxx
Alex
Так он же локальный
Обычно такие аллокаторы используют примерно так:

void Opearation() {
 Buffer buf;
 Foo(&buf);
 Bar(&buf);
}

void Foo(Buffee* buf) {
 // use buf to allocate vector
}
источник

DF

Dollar Føølish in pro.cxx
ну да он локальный, но выше по стеку, поэтому не умрёт
источник