Vin*_*nod 5 c++ std language-lawyer
该问题是有关std :: add_pointer实现的A问题的后续内容
有以下参考:
否则(如果T是cv或ref限定的函数类型),则提供成员typedef类型,即类型T。
基于阅读非静态成员函数:const,volatile和ref限定成员函数,我的理解是对于具有给定cv和/或ref限定条件的非静态成员函数,
a)在cv函数this范围内,函数的资格也适用于指针
b)该ref函数的限定不适用于this该函数范围内的指针
鉴于此,为什么在非静态成员函数具有或资格的情况下std::add_pointer不能为成员提供?typedef type T*cvref
根据[dcl.ptr]/4:
\n\n\n\n\n[ 注意:形成指向引用类型的指针是错误的;请参阅\n [dcl.ref]。如果函数类型具有cv 限定符或ref 限定符,则形成函数指针类型的格式不正确;请参阅\n [dcl.fct]。由于无法获取位域的地址,因此指针永远不能指向位域。\xe2\x80\x89— 结束\n注 ]
\n
您想象的指向 cv 限定函数的指针类型实际上不存在。因此,std::add_pointer不能产生这样的类型:)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |