如何在 C++20 概念中检查模板类型中是否存在别名?
struct example {
using alias_t = int;
};
template<class T>
concept example_concept = requires{
T::alias_t;
};
这是一个示例,如果您将示例作为模板参数 ala 传递,则template<example_concept T>代码将无法编译。如何进行此项检查?
更新
template<class T>
concept future_traits = requires {
typename T::initial_awaitable_t;
typename T::await_awaitable_t;
typename T::final_awaitable_t;
};
template<class return_type>
struct default_traits {
using initial_awaitable_t = std::suspend_always;
using await_awaitable_t = detail::symmetrical_awaitable<detail::promise<return_type, default_traits>>;
using final_awaitable_t = detail::final_awaitable;
};
你不会相信
typename T::alias_t;的。