I
Size: a a a
I
DS
I
DF
DF
DF
DF
ПК
struct tag; // forward declПоведение же будет такое, как и с инстанциациями шаблонов -- будет окончательная проверка только при самой инстанциации?
template <typename T>
concept callable_with_tag = requires(T obj) {
{ obj(std::declval<tag>()) }'
};
struct tag {}; // definition
template <typename T>
requires callable_with_tag<T>
void foo() {
...
};
ПК
AF
struct tag; // forward declПоведение же будет такое, как и с инстанциациями шаблонов -- будет окончательная проверка только при самой инстанциации?
template <typename T>
concept callable_with_tag = requires(T obj) {
{ obj(std::declval<tag>()) }'
};
struct tag {}; // definition
template <typename T>
requires callable_with_tag<T>
void foo() {
...
};
AF
AF
AF
template <typename T>
concept callable_with_tag = requires(T obj, tag&& t) {
{ obj(move(t)) }'
};
VS
struct tag; // forward declПоведение же будет такое, как и с инстанциациями шаблонов -- будет окончательная проверка только при самой инстанциации?
template <typename T>
concept callable_with_tag = requires(T obj) {
{ obj(std::declval<tag>()) }'
};
struct tag {}; // definition
template <typename T>
requires callable_with_tag<T>
void foo() {
...
};
VS
VS
template <typename T>
concept callable_with_tag = requires(T obj, tag&& t) {
{ obj(move(t)) }'
};
tag
по-прежнему non-dependent неполный тип, поэтому я предполагаю, что нетAF
tag
по-прежнему non-dependent неполный тип, поэтому я предполагаю, что нетVS