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

Если есть template <typename Functor> Foo( Functor && f) { static_assert(is_convertible_v<decltype(f),

function<int(int)>)
....
}

насколько вероятно что в компайл тайм f эвалуируется?

22 ответов

21 просмотр

в function<int(int)?

если Foo не constexpr то даже пытаться не будет хД

Pepe 🐸- Автор вопроса
Sergey Sobolev
в function<int(int)?

статик ассерт здесь чтобы Foo принимала только определенные сигнатуры

В данном коде - никогда

Pepe 🐸- Автор вопроса
Kelbon
если Foo не constexpr то даже пытаться не будет хД

у меня почему то 14й стандарт но без констэкспр в студии

Pepe 🐸
у меня почему то 14й стандарт но без констэкспр в ...

не уверен но на 14 стандарте наверное нельзя в constexpr ничего сложнее return a?b:c

Pepe 🐸- Автор вопроса
Pepe 🐸
а чем enable_if лучше?

ну если у тебя функция принимает всего один тип функций int int, то смысла в шаблоне вообще мало, а enable if чтобы можно было сделатьперегрузку

Pepe 🐸- Автор вопроса
Kelbon
ну если у тебя функция принимает всего один тип фу...

я хотел вообще изначально просто с function сделать, но потом захотел чтобы функтор передавался в компайл тайме как-то

Pepe 🐸
а чем enable_if лучше?

Если потом этот Foo пытаться проверять "можно ли в него такую штуку передать", то он enable_if/requires увидит и скажет "нельзя", а вот static_assert внутри не увидит

Artöm Bakri Al-Sarmini
Концепты лучше, enable_if нет

в 99% случаев такие ассерты бесполезны т.к. если их не поставить выпадет ошибка компиляции просто другая(и скорее всего даже понятная)

Kelbon
в 99% случаев такие ассерты бесполезны т.к. если и...

По static_assert failed можно грепать, его условие хорошо видно. enable_if выдает кучу срани вида no member type in blah или no viable overload

Artöm Bakri Al-Sarmini
По static_assert failed можно грепать, его условие...

тем не менее через static assert не сделаешь перегрузки

Artöm Bakri Al-Sarmini
По static_assert failed можно грепать, его условие...

для enable_if впилили костыли по моему в компиляторы, и там сообщение +- нормальное

Artöm Bakri Al-Sarmini
По static_assert failed можно грепать, его условие...

согласен, но с enable_if анализатор ide сразу видит проблему и подчеркивает, что такой перегрузки не нашел. А с static_assert такая функция найдется всегда

Denis P
для enable_if впилили костыли по моему в компилято...

Там все еще список кандидатов вываливается

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта