никак?
https://godbolt.org/z/P4fasnsor
Спасибо. Это первое что я сделал, и я даже уже забыл об этом варианте. Возможно, придётся вернуться к нему... Но я ушёл от этого варианта, потому что not_null_ptr<int*> в таком случае даст int** в итоге, а я хочу чтобы указатель добавлялся только если его совсем нет.
Так говорю - принимайте T&& и дальше преобразуйте как считаете нужным
Не знаю, ОП не указал, что он хочет делать и зачем
Нужна первая часть [p1167], чтобы работало, похоже. Меня очень раздражает, что все начали пилить сложные предложения и никто не заметил этот маленький, но важный кусочек
P1167R0: Improving function templates with Class Template Argument Deduction (by Mike Spertus) (2018-10-08)
А пока, придётся самому учить компилятор...
Мне, кстати, автор ничего не ответил по нему
Не работает template < typename T > auto com_get_refs ( non_null_ptr<T>&& object ) -> decltype( std::declval<T>().Release() ) { object->AddRef ( ); return object->Release ( ); }
Ваш аргумент функции не похож на T&&
я же вам уже ответил выше
Обсуждают сегодня