LA
Size: a a a
LA
m
default_delete
весьма вероятно окажется скрытой в файле реализации.LA
default_delete
весьма вероятно окажется скрытой в файле реализации.m
Foo
, который уже существовал потребует проверки всей кодовой базы на предмет использования unique_ptr<Foo>
, поскольку специализация изменит поведение всех таких указателей. И это хорошо если есть что проверять - библиотечный код не сможет позволить себе этого никогда.LA
Foo
, который уже существовал потребует проверки всей кодовой базы на предмет использования unique_ptr<Foo>
, поскольку специализация изменит поведение всех таких указателей. И это хорошо если есть что проверять - библиотечный код не сможет позволить себе этого никогда.unique_ptr<Foo>
... Я, собственно, предполагаю, что если нам понадобилась специализация, то и стандартный удалитель нам не подходит. А так, для данного Foo
, в предположении того, что мы его поставляем, наша специализация и была бы стандартной. m
unique_ptr<Foo>
... Я, собственно, предполагаю, что если нам понадобилась специализация, то и стандартный удалитель нам не подходит. А так, для данного Foo
, в предположении того, что мы его поставляем, наша специализация и была бы стандартной. Foo
. Я хочу добавить к нему специализацию. Но кто-то мог использовать unique_ptr<Foo>
именно для того чтобы положить объект на хип. Да это маловероятно, но это код, который сломается.LA
Foo
. Я хочу добавить к нему специализацию. Но кто-то мог использовать unique_ptr<Foo>
именно для того чтобы положить объект на хип. Да это маловероятно, но это код, который сломается.LA
unique_ptr
, которое позволяло хранить произвольный тип, а не только указатели. Кажется класс называелся unique_resource
или что-то в этом роде.m
m
LA
delete
надо подвести. Или предполагается, что никаких эффектов кроме delete
?m
delete
надо подвести. Или предполагается, что никаких эффектов кроме delete
?delete
. Но я могу ошибаться.АС
AK
ID
AB
template <class Ty, class Dx>Второе нужно, чтобы не схлопотать dangling reference от lvalue-удалителей в неожиданном месте
unique_ptr(Ty*, Dx&&) -> unique_ptr<Ty*, Dx>;
template <class Ty, class Dx>
unique_ptr(Ty*, Dx&) -> unique_ptr<Ty*, Dx>
O
template<typename T>
auto foo(T t) -> decltype(foo(t));
Или это if-ndr? Сейчас Clang/GCC/MSVC успешно компилируют следующий код:template<typename T>
concept is_foo_invocable = requires {
::foo(std::declval<T>());
};
static_assert(! is_foo_invocable<int>);
Могу ли я полагаться на это?LA