【发布时间】:2019-01-16 20:54:39
【问题描述】:
我来的模板代码在模板类型之后使用*:
...
template <typename _Up, typename _Ep, typename = void>
struct _Ptr
{
using type = _Up*;
};
...
我看到的另一种用法
...
template <typename T, typename \
std::enable_if<std::is_integral<T>::value,T>::type* = nullptr>
...
这个结构在哪里描述?
【问题讨论】:
-
请注意,
_Up、_Ep和_Ptr是保留标识符,因此除非您在标准库的实现中遇到这种情况,否则标识符的使用将具有未定义的行为。 -
看起来您正在深入研究标准库的实现。在使用此代码作为 Shining Example 进行模仿之前,请注意只有标准库实现 is allowed to use underscores in particular ways。
-
@eerorika:不知道。我只是浏览 /usr/include/c++/* 中的 unique_pointer 代码。
-
@KonradEisele 很好,这可以解释为什么他们使用为此目的而保留的标识符。请记住不要模仿他们使用下划线。
-
@KonradEisele 我真诚地不鼓励你通过查看 STL 实现来学习 C++。