Сейчас на форуме: jinoweb (+4 невидимых) |
eXeL@B —› Программирование —› C++ class templates syntax |
Посл.ответ | Сообщение |
|
Создано: 07 июня 2020 02:13 · Поправил: plutos · Личное сообщение · #1 Вопросы к знатокам С++ и class templates syntax. Начиная с C++11 появились вот такие definitions of std::unique_ptr Code:
AND (для манипуляций с array'eм): Code:
С первым определением все ясно, а вот синтакс второго не доходит, конкретно вот эта часть: class unique_ptr<T[], Deleter>. Ведь по идее должно быть: Code:
className в данном случае "unique_ptr", а остальное в <...>? должно быть что-то вроде Code:
Я понимаю, что это template arguments, понимаю зачем этот класс и что он делает, вопрос только ПОЧЕМУ ИСПОЛьЗУЕТСЯ ТАКОЙ SYNTAX? Перелопатил кучу источников, начиная с cppreference.com, но ответа не нашел. Вопрос номер два: я нашел в header file "memory" declarations первого варианта (для версий 14.24.28314 и 14.16.27023), а вот второй вариант (для array T[]) нигде не могу найти. Подскажите, кто знает. И последний вопрос: если возможность просматривать код после того как template arguments уже были substituted конкретными параметрами? Ну вроде как macro expansion after preprocessor'a? Заранее спасибо! ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 07 июня 2020 10:01 · Личное сообщение · #2 unique_ptr может работать не только с инстансами классов, но и с массивами. Соответственно, если оператор delete element; выглядит так для инстанса, то для массива - delete[] element, и следует вывод, что deleter будет в общем случае разный. Потому есть перегрузка для T[], где инстанцирование T приводит к работе с массивом. ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: plutos |
|
Создано: 07 июня 2020 19:56 · Личное сообщение · #3 |
|
Создано: 08 июня 2020 00:52 · Личное сообщение · #4 |
|
Создано: 08 июня 2020 01:19 · Поправил: reversecode · Личное сообщение · #5 нет это частичная специализация ютуб забит учебными курсами по С++, потрудитесь продолжать учиться там | Сообщение посчитали полезным: plutos |
|
Создано: 08 июня 2020 02:11 · Личное сообщение · #6 Разрешение перегрузки, но через частичную специализацию. Ну и reversecode в чём-то прав, в учебниках это есть. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 08 июня 2020 02:37 · Поправил: plutos · Личное сообщение · #7 reversecode пишет: это частичная специализация ну вот, теперь, когда знаю название, потрудился и нашел ответ! Спасибо на добром слове, reverscode! A про АРХАНГЕЛА могу сказать одно: как жаль, что он так редко стал заходить на форум. Раньше читаешь его посты и отдыхаешь душой, словно какое-то звездное мерцание... Копируешь его пост и прямым ходом на Хабр! Под своим именем естественно... ----- Give me a HANDLE and I will move the Earth. |
eXeL@B —› Программирование —› C++ class templates syntax |
Эта тема закрыта. Ответы больше не принимаются. |