“typename”在 asio 分配示例中的含义

What the ‘typename’ mean in asio allocation exmple

第 109 行显示在 asio allocation example

template <typename T>
class handler_allocator
{

...

private:
  template <typename> friend class handler_allocator; // line 109

...

}

我想知道 template 是什么意思?它是 template < typename T> 的常用方式吗?顺便说一句,这个例子可以工作。

handler_allocator 是一个 class 模板 ,因为只有在具体实例化时才会产生实际的 class。因此,这些实例化是多重的,因此每个 T 最终得到一个 class。如果你想让这些不同的 classes 成为彼此的 friend 那么这条线就是你要走的路。

I wonder what the template < typename > mean ? Is it template < typename T> ... ?

不完全是。如果您要添加 T,那么它将导致无效代码,因为此 Tshadow 第一个 T。您可以改为添加任何其他命名标识符(假设 S),但它在没有任何一种情况下都可以工作,因为在此代码段中没有用到它。