АР
Size: a a a
АР
АР
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{}); // failureAT
template<typename T, typename ...Types> constexpr bool any_of = (std::is_same_v<T, Types> || ...);.АР
АР
АР
VS
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{}); // failureD
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{}); // failureCD
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{}); // failureclass T { using C_exact = std::true_type; }CD
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{}); // failureCD
AF
CD
AF
AF
CD
AF
AF
AF