如何解决p在c ++ STL模板参数Tp,Rp,Fp中是什么意思?
我对STL命名约定感到好奇。 STL模板中的“ p”是什么意思。例如:
template <class _Fp> class __value_func;
template <class _Rp,class... _ArgTypes> class __value_func<_Rp(_ArgTypes...)>
{
typename aligned_storage<3 * sizeof(void*)>::type __buf_;
typedef __base<_Rp(_ArgTypes...)> __func;
__func* __f_;
这意味着ty p e吗? Tp表示“ T y p e”,Rp表示“ R 返回值 p e”,Fp表示“ F 连接类型 p e”?
解决方法
如果您查看标准,则名称通常为T
,U
,R
,ArgTypes
等。
但是实施者不能使用这些名称,因为人们会做类似的事情
#define T true
。
因此,实现使用以前划线开头的标识符。
但是,令人失望的大量代码库使人们完成了#define _N 23
之类的工作。是的,为实现保留。人们还是这样做。 :-(
例如,libc ++使用_Tp
,_Up
,_Rp
,_ArgTypes
等。
这些名称没有太多含义。它们以下划线和大写字母开头,且长度超过两个字符-与标准中使用的名称足够相似,您可以将其匹配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。