remove_cvref_t:你也读得懂的源码

template 
using remove_cvref_t = _Remove_cvref_t<_Ty>;

源码是msvc的,同时去掉了一些宏……那些宏很影响主要的逻辑吗?

上面是using,让我们继续跳转

using _Remove_cvref_t = remove_cv_t>;

这里出现了两个我们感兴趣的玩意,直接一步到位:

template 
struct remove_cv { // remove top-level const and volatile qualifiers
    using type = _Ty;

    template