非静态成员函数的std :: add_pointer实现

Vin*_*nod 5 c++ std language-lawyer

该问题是有关std :: add_pointer实现的A问题的后续内容

std :: add_pointer下

有以下参考:

否则(如果T是cv或ref限定的函数类型),则提供成员typedef类型,即类型T。

基于阅读非静态成员函数:const,volatile和ref限定成员函数,我的理解是对于具有给定cv和/或ref限定条件的非静态成员函数,

a)在cv函数this范围内,函数的资格也适用于指针

b)该ref函数的限定不适用于this该函数范围内的指针

鉴于此,为什么在非静态成员函数具有或资格的情况下std::add_pointer不能为成员提供?typedef type T*cvref

L. *_* F. 1

根据[dcl.ptr]/4

\n\n
\n

注意:形成指向引用类型的指针是错误的;请参阅\n [dcl.ref]。如果函数类型具有cv 限定符ref 限定符,则形成函数指针类型的格式不正确;请参阅\n [dcl.fct]。由于无法获取位域的地址,因此指针永远不能指向位域。\xe2\x80\x89— 结束\n注 ]

\n
\n\n

您想象的指向 cv 限定函数的指针类型实际上不存在。因此,std::add_pointer不能产生这样的类型:)

\n