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

Слушайте, а есть идея. Допустим есть у нас class T {}; concept

C; // C<T> -> true
auto foo(C auto x) { ... }

Скажем любой U, повторяющий интерфейс T, будет удовлетворять C. Допустим мы хотим именно eager (блин как это слово на русский переводится?) трейты - чтобы U удовлетворял C только если явно это укажет
А если как-нить так:

explicit concept C; // "explicit" keyword here
class T : C { ... };
class U { ... };
auto foo(explicit C auto x) { ... } // or maybe here
foo(T{}); // ok
foo(U{}); // failure

5 ответов

26 просмотров

мне это чем-то напоминает концепты, которые разрабатывались для 11 стандарта. в последнем или предпоследнем hopl страуструп подробно про них рассказывает

Это похоже на протоколы свифта

class T { using C_exact = std::true_type; }

Тут смотри какое дело. При кажущейся похожести подобной структуры это немного не концепты, а трейты (что характерно, можно добиться эффекта через специализацию шаблона). Я не помню терминов, но есть разница между подходом "сущность определяется содержимым" (как struct в C) и "сущность определяется именем" (как struct в С++). Концепты это первое, и это само по себе кажется очень важным - концепт это не более, чем соглашение вот этот набор свойств называть вот так, в которое при помощи tag-ов дописаны свойства, которые в текущий момент не могут быть записаны в языке как утверждения, после чего концепт не может страдать архитектурными ошибками вида "в этом трейте требуется лишнее" - концепт это только имя.

Андрей-Руссков Автор вопроса

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

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

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