template <class T>
using IteratorMemberFunction = T::iterator(T::*)();
用IteratorMemberFunction<T>(&T::begin)从T中获取成员函数的函数指针文章来源:https://www.toymoban.com/news/detail-512625.html
使用decltype获取类型,判断该类型是否为一个成员函数,不包含 begin 就会违反这个约束文章来源地址https://www.toymoban.com/news/detail-512625.html
template <class T>
concept HasBegin = std::is_member_function_pointer_v<
decltype(
IteratorMemberFunction<T>(&T::begin)
)>;
template <class T> concept IsIterable = HasBegin<T> && HasEnd<T>;
template <class From, class To>
concept AnyConvertible = requires { typename std::common_type_t<From, To>; }
到了这里,关于C++ 模板 using, Concept的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!