Matwey
Matwey
Constantine
Dmitry
Специализации и не может быть, у типа может быть десяток разных переопределенных new.
Dmitry
я привел пример с сигнатурой из стандарта п.17.6.4.6
operator new(std::size_t, const std::nothrow_t&)
Dmitry
Не обязательно использовать наверное глобальную константу, new(std::nothrow_t()) тоже сойдёт.
Dmitry
int main(){
// error: cannot allocate function type 'std::nothrow_t ()' with new
auto f = new (std::nothrow_t()) foo;
}
Constantine
Dmitry
new(my_supapapa_mempool&)?
Dmitry
лучше {}
действительно, но все равно не понятно что же с external linkage
Dmitry
Тип здесь только для разрешения overload, так что неважно откуда он возьмётся из глобальной переменной с external linkage или из rvalue.
Dmitry
О, и {} не сработает же :) туплю...
Dmitry
у меня работает оба варианта вроде)
Dmitry
Если совсем custom приделывать, главное не забыть с той же сигнатурой delete иначе при исключении в конструкторе будет утечка.
Dmitry
Понял, благодарю
Dmitry
Хм, а вот интересно, может быть custom перегрузка new nothrowing?
Dmitry
с бОльшим число параметров?
Dmitry
Т.е. делает ли компилятор проверку на nullptr после вызова пользовательской перегрузки?
Dmitry
на nullptr пользователь вроде как проверять должен, как malloc
Dmitry
В конечном итоге внутри перегрузки надо будет вызвать стандартный nothrow new я так понимаю, а в нем проверок нет
_LIBCPP_WEAK
void*
operator new(size_t size, const std::nothrow_t&) _NOEXCEPT
{
void* p = 0;
#ifndef _LIBCPP_NO_EXCEPTIONS
try
{
#endif // _LIBCPP_NO_EXCEPTIONS
p = ::operator new(size);
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
}
#endif // _LIBCPP_NO_EXCEPTIONS
return p;
}
Dmitry
Если тип не тривиальный, то надо разворачивать стек и вызывать деструкторы для тех, кого уже успел создать получается
Dmitry
Это да, хотя в данном случае разворачивать пока нечего.
Dmitry
Для стандартной сигнатуры с nothrow_t проверка гарантированно есть.
Dmitry
А для нестандартной?
Dmitry
Я просто еще подумал, что будет делать рантайм если на пути создания между базо
вым классом и целевым (по иерархии) new вдруг вернет nullptr?
Dmitry
Варианты:
- проверки нет
- проверка есть если первый аргумент с типом std nothrow_t
- проверка есть если хоть один аргумент такой
- проверка есть всегда
Dmitry
Dmitry
а если внутри конструктора еще для полей new делать
Dmitry
И если перегрузки нет, утечка.
Matwey
/report
Anonymous
/report
Reported to 1 admin(s)
Dmitry
Dmitry
Просто проверка на nullptr это обычно пессимизация, интересно как это учитывается для расширенных перегрузок.
Dmitry
Хе, тогда у Дмитрия его перегрузка без noexcept внезапно станет UB?
Dmitry
Есть devops и backend?
Cuno
В boost::iostreams есть адаптер, который из direct Source сделает indirect? ( https://www.boost.org/doc/libs/1_66_0/libs/iostreams/doc/concepts/direct.html )
Khusrav
Qt 5.4 Привет друзя у меня вопрос во время статическая сборка проект
Project ERROR: Unknown module(s) in QT: webkitwidgets webkit
как решить ?
но просто пустая форма собираеть
очен извеняюс помогите пожалуйсто
Khusrav
ed
ой фу, qmake..
Вам скорее
@supapro
Или сюда
@qt_chat
Khusrav
Денис
Денис
хотя для версии 5.4 незнаю
Денис
Именно webkit
Денис
Точно знаю что в последних версиях webkit как модуль не поставляется для mingw
Денис
для msvc да, а вот для mingw убрали
Denis
Khusrav
Денис
Попробуй webenginewidgets webengine webenginecore
Denis
помогите пожалуйсто есть какой не буд уроки для это что делать надо
тебе еще вчера сказали что тебе не надо пилить свой велосипед, особенно когда у тебя нет опыта совсем. Статик линковка кьюта это занятие для сильных духом и я вот вообще не уверен что вебкит можно например. Возьми любой браузер и поставь туда плагин с киоск модом и будет тебе счастье
Khusrav
Khusrav
Denis
я не трус я этого делаю это мне нужно
ну тогда копай. Я вот более чем уверен, что в кьютешном чатике (а тут тем более) не найдется человека, который делал такую экзотику, а тем более который помнит как это было. Это же версии трехлетней давности
Khusrav
Khusrav
Denis
оооо все *.dll ки лудше или один *.exe ?
еще лучше, когда используются *.so, установленные в /usr/lib, лол. Но если серьезно, то я не шучу про то, что динамическая линковка кьюта это основной и рекомендуемый способ
Khusrav
Denis
я не очень понимаю что именно ты просишь. Ссылку на изучение как сделать приложение на кьюте? http://doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html Ссылку на то, как делать динамик линковку? Ну там вроде ничего специально делать не надо, ставишь из онлайн инсталлера и используешь
Khusrav
Konstantin
dll hell
Anonymous
Привет всем
Max
Hello, World
Anonymous
https://m.lenta.ru/news/2018/04/13/telegram_finish/amp/
Michael
Ушлёпки!