170 похожих чатов

Template<Class, class Key = void> class Type { void perform_key_action()

{
static_assert(!std::is_same_v<Key, void>, "no key");
key().method();
}
}
Что поменяется с отсутствием Статик ассерта? Если у нас этот метод никак расширяться не может и точек кастомищации 0

3 ответов

28 просмотров

>> Что поменяется с отсутствием Статик ассерта? Вы неверно поняли мою мысль. Нужно не static_assert убрать, а добавить адекватную проверку входных данных — концепты. В крайнем случае повесить SFINAE на perform_key_action, чтобы ошибки отлавливались в сигнатуре, а не отложенно через static_assert. Потому что отложенная проверка хоть и позволяет написать читаемое сообщение с ошибкой, но имеет ряд проблем как, например, приведённый пример выше

Слава- Автор вопроса
Ofee Oficsu
>> Что поменяется с отсутствием Статик ассерта? В...

Так к каким ошибкам в данном случае это приведет, если это по сути проверка инврианта

Слава
Так к каким ошибкам в данном случае это приведет, ...

Из приведённого выше примера — это не так, и проверка полностью зависит от входных данных (предоставления/не предоставления пользователем Key). Правильный вариант решения — и вовсе убрать дефолтный параметр, тогда никаких проверок и не нужно. Но если же это какая-то полностью приватная часть библиотеки, лежащая в mylib::detail::, и пользователь никогда с ней не взаимодействует, то так, пожалуй, можно сделать

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта