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

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

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

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

22 ответов

19 просмотров

в 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 впилили костыли по моему в компилято...

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта