W
https://godbolt.org/z/GaK1Ma
Size: a a a
W
RP
АК
-fconcepts-diagnostics-depth=2
в gcc показал, что он считает T::name
ссылкой на std::string
, из-за чего фейлитсяD
АК
template <class T>
concept has_string_name = std::same_as<decltype(T::name), std::string>;
D
template <class T>
concept has_string_name = std::same_as<decltype(T::name), std::string>;
W
template <class T>
concept has_string_name = std::same_as<decltype(T::name), std::string>;
АК
template <class T>
concept is_option = requires {
requires std::same_as<decltype(T::name), std::string>;
requires std::same_as<decltype(T::description), std::string>;
requires std::same_as<decltype(T::short_name), std::optional<std::string>>;
};
&&
, но если внутри будут какие-то ещё требования, кроме полей, то лучше именно так)W
template <class T>
concept is_option = requires {
requires std::same_as<decltype(T::name), std::string>;
requires std::same_as<decltype(T::description), std::string>;
requires std::same_as<decltype(T::short_name), std::optional<std::string>>;
};
&&
, но если внутри будут какие-то ещё требования, кроме полей, то лучше именно так)АК
W
DP
-fconcepts-diagnostics-depth=2
в gcc показал, что он считает T::name
ссылкой на std::string
, из-за чего фейлитсяdecltype((T::name))
для такой конструкцииAP
DP
type func(some_concept auto args);
// Не приняли?type func(some_concept args);
- отклонили.template</*....*/>
ещё раз не хочется, т.к. он в концепте уже раз написан.W
АК
type func(some_concept auto args);
// Не приняли?type func(some_concept args);
- отклонили.template</*....*/>
ещё раз не хочется, т.к. он в концепте уже раз написан.W
АК