我对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_;
这是否意味着type?Tp的意思是“"Type",Rp”的意思是“Re转折type",Fp的意思是”F连接点type"?
发布于 2020-08-21 05:45:46
如果您查看标准,名称通常是T
、U
、R
、ArgTypes
等,但是实现者不能使用这些名称,因为人们会做一些像#define T true
这样的事情。
因此,实现使用以前导下划线开头的标识符。然而,有大量令人失望的代码库,人们已经做了像#define _N 23
这样的事情。是的,它是为实现而预留的。反正人们都会这么做。:-(
所以,libc++ (例如),使用_Tp
,_Up
,_Rp
,_ArgTypes
等等。这些名字并没有太多的含义。它们以下划线和大写字母开头,它们的长度超过两个字符--它们与标准中使用的名称非常相似,可以与它们匹配。
https://stackoverflow.com/questions/63515136
复制相似问题