Size: a a a

2020 August 07

p

polunin.ai in rust_offtopic
Constantine Drozdov
Хм... а Just x это макрос создающий N объектов?
В хаскеле генерики а не шаблоны
источник

Т8

Т-34 85 in rust_offtopic
Kai Ren
это я от тебя слышу? ты там не перегрелся на солнышке?
😁
источник

CD

Constantine Drozdov in rust_offtopic
polunin.ai
В хаскеле генерики а не шаблоны
Ты не ответил. Все результаты вызовов Just N различны для натуральных N. Это макрос?
источник

p

polunin.ai in rust_offtopic
Constantine Drozdov
Ты не ответил. Все результаты вызовов Just N различны для натуральных N. Это макрос?
Разница в том что шаблоны проверяются после мономорфизации, а генерики до мономорфизации.
источник

Т8

Т-34 85 in rust_offtopic
Doge Shibu
Вместо шаблонной магии, делаешь магию на трейтах, вся разница
decltype и вне шаблонов применим
источник

p

polunin.ai in rust_offtopic
Just это функция с генериком, она строго одна
источник

p

polunin.ai in rust_offtopic
А <template> буквально кодогенерирует функции
источник

Т8

Т-34 85 in rust_offtopic
polunin.ai
Разница в том что шаблоны проверяются после мономорфизации, а генерики до мономорфизации.
то есть, макрос?
источник

CD

Constantine Drozdov in rust_offtopic
polunin.ai
Разница в том что шаблоны проверяются после мономорфизации, а генерики до мономорфизации.
Требование работать так не описано в стандарте С++. Проверка может быть выполнена путём генерации всех фактических условий из тела функции, просто это бесполезно. О чем вопрос?
источник

p

polunin.ai in rust_offtopic
Т-34 85
то есть, макрос?
Да, макросы проверяются после раскрытия
источник

Ct

Casual tears in rust_offtopic
Constantine Drozdov
Требование работать так не описано в стандарте С++. Проверка может быть выполнена путём генерации всех фактических условий из тела функции, просто это бесполезно. О чем вопрос?
Хм, а может ли быть? Там нигде неразрешимостей никаких не возникнет?
источник

NL

Nick Linker in rust_offtopic
Constantine Drozdov
Ну & это по сути требование именованной переменной ака чего-то живущего больше текущего выражения, и временный вектор не подходит
Но мой поинт был в другом: с помощью decltype тип возвращаемого значения может быть выведен по типам параметров неявно, и эта неявность приносит головную боль.

Лучше бы, чтобы это было явное типовое выражение, какое-нибудь U, которое бы строилось на основании типов входящих значений в where блоке или чём-то подобном, скажем:

where
U: r_value_ref<C<T>, index_of<T>>

А типовые выражения могли бы содержать статик касты, тайп-лямбды и библиотечные тайп-функции.
источник

p

polunin.ai in rust_offtopic
Constantine Drozdov
Требование работать так не описано в стандарте С++. Проверка может быть выполнена путём генерации всех фактических условий из тела функции, просто это бесполезно. О чем вопрос?
Нет, это невозможно в плюсах
источник

Т8

Т-34 85 in rust_offtopic
Constantine Drozdov
Требование работать так не описано в стандарте С++. Проверка может быть выполнена путём генерации всех фактических условий из тела функции, просто это бесполезно. О чем вопрос?
ему не нравится утиная типизация, наверное
источник

CD

Constantine Drozdov in rust_offtopic
polunin.ai
Нет, это невозможно в плюсах
Что значит невозможно
template <typename T> T add(T a, T b) { return a + b; }
источник

CD

Constantine Drozdov in rust_offtopic
я могу получить требование на T вида { a + b } -> T
источник

p

polunin.ai in rust_offtopic
Constantine Drozdov
Что значит невозможно
template <typename T> T add(T a, T b) { return a + b; }
Оно создаст по функции на каждый T
источник

CD

Constantine Drozdov in rust_offtopic
polunin.ai
Оно создаст по функции на каждый T
И что? Just N создаст Just 42
источник

p

polunin.ai in rust_offtopic
Constantine Drozdov
я могу получить требование на T вида { a + b } -> T
Не можешь потому что ты не знаешь что такое +
источник

Ct

Casual tears in rust_offtopic
Constantine Drozdov
я могу получить требование на T вида { a + b } -> T
Но оно некорректное же. Таким образом ты отсечешь типы, для которых a + b возвращает U, неявно преобразующийся в T.
источник