Size: a a a

2021 April 25

O

Ofee in rust_offtopic
Да, всё взорвётся в компилтайме. В плюсах мы защищаемся от дурака на входе, а не внутри
источник

D

Danya in rust_offtopic
Сломается только если у decltype(x) нет методов нужных для вызова
источник

O

Ofee in rust_offtopic
Смотри, мы требуем x.foo(), но сами при этом вызываем x.fooooo(), следовательно, с высокой вероятностью всё взрывается, если x не имеет fooooo(). А если имеет – мы не узнаем об ошибке
источник

D

Danya in rust_offtopic
Ну если у типа это реализовано, то нет
источник

[

[BRM]White Rabbit in rust_offtopic
т.е. компилятор по следующему далее контексту определяет, что у fooble должна быть функция foo, а если её нет, проверяет следующий стейт концепта?
источник

O

Ofee in rust_offtopic
Вообще, он проверяет только то, что у x есть либо foo, либо bar

Соответственно, внутрь функции лишнего ничего не пройдёт, а потому мы один раз проверяем, что что-то имеет foo и вызываем foo(). Если не имеет – значит, гарантированно есть bar, поэтому на него проверять смысла нет
источник

[

[BRM]White Rabbit in rust_offtopic
а, я кажется понял, это же плюсы
источник

[

[BRM]White Rabbit in rust_offtopic
Вот эта функция может спокойно существовать в коде и в неё даже может залететь класс, если у него реализовано fooooo или barrrr, концепт никак не обязывает тебя доказывать принадлежность к нему
источник

O

Ofee in rust_offtopic
Да, именно так
источник

[

[BRM]White Rabbit in rust_offtopic
ну и хуета
источник

O

Ofee in rust_offtopic
Это одновременно и (не столь) серьезная проблема, и очень полезная фича, которую я продемонстрировал выше
источник

O

Ofee in rust_offtopic
Вообще, мы конечно же можем написать так, чтобы оно гарантированно провеляло наличие fooooo/barrrr, но пока только на макросах и только при инстанцировании, это... на самом деле не несёт практической пользы. Да, компиляция больше не падает, может найти какую-то фоллбек функцию, но и выявить, какое же из выражений оказалось невалидным также трудно, как и до этого
источник

[

[BRM]White Rabbit in rust_offtopic
потому что это плюсы, да?
источник

IL

Ilya L in rust_offtopic
Не в обиду и не с желанием поиздеваться говорю
Но звучит так, будто очень обидел тебя в какой-то момент язык
источник

IL

Ilya L in rust_offtopic
(то что он всех обижает своей сложностью и неудобством и так понятно)
источник

[

[BRM]White Rabbit in rust_offtopic
нет, просто я в один момент перестал надеяться на то, что плюсы вообще способны быть юзер-френдли
источник

O

Ofee in rust_offtopic
Потому что оказалось, что пользы от этого больше, а с проблемами подхода за это время уже научились мириться

Кроме того, из-за компилтайм-вычислений всё становится сложнее, потому что проверки типов для некоторых гарантий недостаточно – значения также определяют корректность выражений
источник

IL

Ilya L in rust_offtopic
А, это. Понимаю в общем-то. И тоже не особо надеюсь
источник

O

Ofee in rust_offtopic
Ну, мы можем натравить статический анализатор, но он будет давать ложноположительные результаты, как в примере выше и не сможет отловить некоторые очень сложные случаи, связанные с литералами и компил-тайм значениями

Так что ничего не поделать без отказа от полезной фичи
источник

[

[BRM]White Rabbit in rust_offtopic
и что, динамическое создание предикатов для трейта часто используется?
источник