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
                  
                  
                
мне это чем-то напоминает концепты, которые разрабатывались для 11 стандарта. в последнем или предпоследнем hopl страуструп подробно про них рассказывает
Это похоже на протоколы свифта
class T { using C_exact = std::true_type; }
Тут смотри какое дело. При кажущейся похожести подобной структуры это немного не концепты, а трейты (что характерно, можно добиться эффекта через специализацию шаблона). Я не помню терминов, но есть разница между подходом "сущность определяется содержимым" (как struct в C) и "сущность определяется именем" (как struct в С++). Концепты это первое, и это само по себе кажется очень важным - концепт это не более, чем соглашение вот этот набор свойств называть вот так, в которое при помощи tag-ов дописаны свойства, которые в текущий момент не могут быть записаны в языке как утверждения, после чего концепт не может страдать архитектурными ошибками вида "в этом трейте требуется лишнее" - концепт это только имя.
 Андрей
                          Руссков
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Андрей
                          Руссков
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  да, знаю. Но иногда хочется именно трейт.
Обсуждают сегодня