大佬教程收集整理的这篇文章主要介绍了c – 换行模式std :: begin;返回开始(c);成功能,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
template <typename C> auto Begin(C&& C) -> ??? { using std::begin; return begin(std::forWARD<C>(C)); }
我想要这个的原因是我想写一个模板变量
template <typename C> constexpr bool IsBidirectionalContainer = std::is_base_of<std::bidirectional_iterator_tag,typename std::iterator_Traits< decltype(std::begin(std::declval<C>()))>::iterator_category>::value;
namespace details { using std::begin; template <typename C> auto Begin(C&& C) -> decltype(begin(std::forWARD<C>(C))) { return begin(std::forWARD<C>(C)); } }
然后:
template <typename C> constexpr bool IsBidirectionalContainer = std::is_base_of<std::bidirectional_iterator_tag,typename std::iterator_Traits< decltype(details::Begin(std::declval<C>()))>::iterator_category>::value;
如果由于某种原因您拒绝在命名空间内定义Begin,则可以使用类型别名来绕过它.
namespace details { using std::begin; template <typename C> using type = decltype(begin(std::forWARD<C>(C))); } template <typename C> auto Begin(C&& C) -> details::type<C> { return begin(std::forWARD<C>(C)); }
虽然这可能比必要的工作更多.前瞻声明可能就足够了.
以上是大佬教程为你收集整理的c – 换行模式std :: begin;返回开始(c);成功能全部内容,希望文章能够帮你解决c – 换行模式std :: begin;返回开始(c);成功能所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。