Size: a a a

2021 November 11

t

ttldtor in codingteam
то есть, никакой проверки структуры итд.
источник

Dv

Dr. Friedrich von Ne... in codingteam
В C# для этого обычно используют структуру без полей. Маркер, считай. И создают её через new constraint там, где надо. А функции, требующие инстанс тайпкласса, параметризуют этим инстансом.

В Java так просто уже не получится, но можно просто передавать его везде явно, наверное?


Prelude.sum<IntSumMonoid, Integer>(new IntSumMonoid(), 1, 2);


В Scala оно вот так вот примерно под капотом и работает, просто инстансы в основном передаются неявно.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Мне кажется, тут чекер нужно делать наоборот. Параметризовать его проверяемым типом, а не булём.
источник

t

ttldtor in codingteam
в идеале хотелось бы реализовать что-то типа "implements", но штуки типа концептов не пробрасываются как параметры шаблонов. В ди есть удобная вещь alias, которая в качестве параметра шаблона может хоть аллаха принять

и ты можешь написать, например:

struct A(alias X) {
};

A!(std.stdio) a;
A!(42) b;
источник

t

ttldtor in codingteam
в идеале, вообще пометить структуру своим атрибутом, который бы принял параметрами все "трейты" и какой-то миксин, вытащил бы из атрибута трейты, прошёл по полям\требованиям и проверил, удовлетворяют ли они или нет. Но...такое можно в ди сделать. Не в С++
источник

t

ttldtor in codingteam
а концепт -- это "хрень", которая возвращает бул. И хз какая сигнатура или тип у этой хрени.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Концепт возвращает бул? Серьёзно? Блин, я совсем отстал от современных плюсов, не знал такой подробности :(
источник

Dv

Dr. Friedrich von Ne... in codingteam
Я думал, что, если твой код не удовлетворяет концепту, он просто по SFINAE отваливается. А там ещё какой-то return type у него есть?
источник

t

ttldtor in codingteam
ну, минимальный концепт

requires true
источник

t

ttldtor in codingteam
requires ожидает что-то, что возвращает bool
источник

t

ttldtor in codingteam
просто ключевой слово concept позволяет писать кучу проверок
источник

t

ttldtor in codingteam
они могли бы не заморачиваться, но почему-то завезли кучу ключевых слов
источник

t

ttldtor in codingteam
ну, ради такого не заморачиваться.
источник

t

ttldtor in codingteam
ой-ёй, мантикор с 2014-го года критикует имплементации фич в плюсах, потому что у него хватает мозгов посмотреть по сторонам, в отличие от тех, кто завозит пропосалы
источник

t

ttldtor in codingteam
это как... насрать в труднодоступном месте египетской пирамиды. Одновременно вписать своё имя в историю и при этом не напрягать голову.
источник

t

ttldtor in codingteam
ладно, не насрать, но написать надпись
источник

Dv

Dr. Friedrich von Ne... in codingteam
Я бы хотел!
источник

t

ttldtor in codingteam
напиши пропосал в C++
источник

Dv

Dr. Friedrich von Ne... in codingteam
Алекс написал, вон.
источник

Dv

Dr. Friedrich von Ne... in codingteam
А я его видал!
источник