Constantine
Рантайм проверки у меня уже есть
Constantine
В дебаге
Aidar
Там проверки на уровне каста типов
Constantine
Мне не нужны рантайм проверки, я их умею писать руками
Aidar
В расширениях джавы такое тоже есть
Aidar
Тоже в рантайме
Ivan
Пацаны, когда говорят рантайм С++, имеют ввиду что? Обёртку над исключениями? Что си плюс плюс ещё что-то генерит? Отличается чем-то от рантайма си?
Aidar
У тебя как минимум будет проверка при создании этого указателя
Aidar
Это тоже рантайм
Constantine
Нет, оператор нью не может вернуть налл
Constantine
Alex
Как?
/cppref nothrow
FailsBot
Search results for "nothrow" 1. std::nothrow 2. std::is_nothrow_swappable 3. std::is_nothrow_assignable 4. std::is_nothrow_destructible 5. std::is_nothrow_constructible 6. std::is_nothrow_copy_assignable 7. std::is_nothrow_move_assignable 8. std::is_nothrow_copy_constructible 9. std::is_nothrow_move_constructible 10. std::is_nothrow_default_constructible 11. std::experimental::is_nothrow_assignable_v 12. std::experimental::is_nothrow_destructible_v 13. std::experimental::is_nothrow_constructible_v 14. std::experimental::is_nothrow_copy_assignable_v 15. std::experimental::is_nothrow_move_assignable_v 16. std::experimental::is_nothrow_copy_constructible_v 17. std::experimental::is_nothrow_move_constructible_v 18. std::experimental::is_nothrow_default_constructible_v 19. throw expression
Ivan
Type_info несёт какой-то оверхед?
Alex
Как?
int *a = new(std::nothrow) int[100500];
Aidar
Там эксепшн упадет это фактически же не возврат
Aidar
А
Aidar
Мм
Aidar
Не знал
Constantine
Ладно, это не тот нью
Alex
Во время pre-C++98 new без этой шняги возвращал NULL при неудаче
Constantine
Такой нью мне не нужен
Constantine
Мой нью будет с экспешеном
Alex
Ага)
Alex
Мой нью будет с экспешеном
Ьери тогда обычный, и лови std::bad_alloc
Aidar
Че-то тема съехала
Ivan
Ага)
Чувак, а можно type info отключить как exception'ы?
Aidar
Нет, оператор нью не может вернуть налл
Но ты можешь туда сунуть что-то что налл
Constantine
У меня либо есть формальное доказательство квалификатора
Constantine
Возможно с рантайм проверкой
Aidar
Данные откуда берутся
Constantine
И исключением
Constantine
Либо нет квалификатора
Constantine
Например, под ифом у меня есть формальное доказательство квалификатора
Aidar
Ты можешь квалификатор заменить типами с кастами
Aidar
Сам квалификатор не нужен
Ivan
Валяй!
Constantine
Не могу
Aidar
Можешь
Alex
Чувак, а можно type info отключить как exception'ы?
Если ты не юзаешь typeid и dynamic_cast, то можно не париться. А вообще в msvc видел такой переключатель
Constantine
Могу уничтожив тип от слова совсем
Aidar
Зачем
Constantine
Потому что я не могу принять в функцию юник птр и не синтезировать делитер
Aidar
Что ты не можешь сделать с типами
Constantine
Осознай это
Alex
А. С бник птр есть такая проблем
Constantine
Даже если у меня есть доказательство, что я никогда не вызову делит
Aidar
Вот как раз другой тип
Constantine
Тогда я обязан потерять информацию о типе
Aidar
О каком
Aidar
Какую информацию
Constantine
Я получаю указатель типа юник птр
Dmitry
божеж ты мой сколько опять нафлудили
Aidar
Это уже неправильно
Aidar
У тебя вызовется деструктор
Constantine
Считай это инпутом
Aidar
Дальше что
Dmitry
@webreh может покажешь хотя бы приблизительно что ты хочешь на сниппете в melpon например?
Constantine
Я получаю указатель который обязан удалить либо вернуть с пруфами
Aidar
Удалить указатель?
Constantine
Как мне написать такой код на плюсах?
Ivan
Кинь ссылку на ideone.com
Constantine
Ну если параметр функции юник птр семантически одно из двух
Aidar
Тоесть ты либо инвалидный юник принтер возвращаешь либо тот же самый
Aidar
Дальше что
Constantine
Либо я его запишу, либо я его удалю
Aidar
Ты должен что-то вернуть
Constantine
О чем ты вообще
Ivan
Либо я его запишу, либо я его удалю
Я правильно понимаю ты хочешь вернуть unique ptr из функции?)
Aidar
Кинь код короче
Constantine
Я же кидал
Aidar
Там обрывки
Aidar
С километрами фраз
Constantine
Я хочу написать функцию, которая примет и вернет юник птр на инкомплит тайп