Size: a a a

2020 July 30

C

CodeDetector in supapro.cxx
Unknown T.
ну вот у std::allocator, на котором вроде бы весь stl, только allocate/deallocate. Но в allocate есть hint -- указатель, максимально близко к которому мы хотим выделить новую память. Не знаю, может ли он тут пригодиться
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

VS

Vladimir Suisei in supapro.cxx
Unknown T.
ну вот у std::allocator, на котором вроде бы весь stl, только allocate/deallocate. Но в allocate есть hint -- указатель, максимально близко к которому мы хотим выделить новую память. Не знаю, может ли он тут пригодиться
А почему стдшники не сделалли reallocate()
источник

D

Danya in supapro.cxx
Vladimir Suisei
А почему стдшники не сделалли reallocate()
#ненужно
источник

UT

Unknown T. in supapro.cxx
Vladimir Suisei
А почему стдшники не сделалли reallocate()
Ну а что если места не хватает, чтобы довыделить?
источник

VS

Vladimir Suisei in supapro.cxx
Danya
#ненужно
Так можно же бустануть скорость
источник

VS

Vladimir Suisei in supapro.cxx
Unknown T.
Ну а что если места не хватает, чтобы довыделить?
Ну внутри логика чтобы проверять, хватает или не хватает, и если не хватает, то dealloc+alloc
источник

D

Danya in supapro.cxx
Vladimir Suisei
Так можно же бустануть скорость
Для этого есть другие аллокаторы
источник

D

Danya in supapro.cxx
Если тебе нужна скорость
источник

UT

Unknown T. in supapro.cxx
Vladimir Suisei
Ну внутри логика чтобы проверять, хватает или не хватает, и если не хватает, то dealloc+alloc
Ну, кстати, если заморочиться, то, наверное можно без deallocate сделать вектор... Типа выделять память с hint = адрес предыдущего фрагмента, но стоит ли оно того
источник

d

dekabr in supapro.cxx
Danya
Лучше маленький пример покажи
В целом да
template <typename T>
concept convertable = std::is_convertible_v<T, std:: function<void(int, int)>>;

template <typename Func>
Foo(Func&&){}

template <convertable Func>
Foo(Func&&){}
источник

C

CodeDetector in supapro.cxx
dekabr
template <typename T>
concept convertable = std::is_convertible_v<T, std:: function<void(int, int)>>;

template <typename Func>
Foo(Func&&){}

template <convertable Func>
Foo(Func&&){}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

D

Danya in supapro.cxx
dekabr
template <typename T>
concept convertable = std::is_convertible_v<T, std:: function<void(int, int)>>;

template <typename Func>
Foo(Func&&){}

template <convertable Func>
Foo(Func&&){}
В либе концептов есть std::covertible_to
источник

AS

Anatoly Shirokov in supapro.cxx
Unknown T.
больше capacity же?
да, описался
источник

VS

Vladimir Suisei in supapro.cxx
Что такое POD в контексте блоков памяти?
источник

D

Danya in supapro.cxx
dekabr
template <typename T>
concept convertable = std::is_convertible_v<T, std:: function<void(int, int)>>;

template <typename Func>
Foo(Func&&){}

template <convertable Func>
Foo(Func&&){}
using func = std::function;
...
template <std::convertible_to<func> Func>
источник

D

Danya in supapro.cxx
dekabr
template <typename T>
concept convertable = std::is_convertible_v<T, std:: function<void(int, int)>>;

template <typename Func>
Foo(Func&&){}

template <convertable Func>
Foo(Func&&){}
Да, в данном случае сработает
источник

d

dekabr in supapro.cxx
Спасибо
Где можно почитать про случаи, когда не сработает?
источник

D

Danya in supapro.cxx
dekabr
Спасибо
Где можно почитать про случаи, когда не сработает?
Я сейчас напишу один)
источник

D

Danya in supapro.cxx
template <typename T1, typename T2>
 requires std::is_same_v<T1, T2>
void foo() {}

template <typename T1, typename T2>
 requires std::is_same_v<T1, T2>
&& std::is_trivial_v<T1>
void foo() {}

foo(3, 4) // compiler error: call to foo is ambiguous
источник

Е

Егор in supapro.cxx
Danya
template <typename T1, typename T2>
 requires std::is_same_v<T1, T2>
void foo() {}

template <typename T1, typename T2>
 requires std::is_same_v<T1, T2>
&& std::is_trivial_v<T1>
void foo() {}

foo(3, 4) // compiler error: call to foo is ambiguous
так оба варианта подходят, не? Вроде бы у автора вопроса другая ситуация
источник