多参数模板不能很好地处理友元声明

Multi parameter template not playing nicely with friend declaration

本文关键字:处理 友元 声明 很好 不能 参数      更新时间:2023-10-16

以下代码段在Visual Studio和g++中都可以正常工作。

template<typename T> class BST;
template<typename T>
class BSTNode 
{
    friend class BST<T>;
...

而这个片段在VS中运行良好,但在g++中则不然

template<typename K, typename V> class Map;
template<typename K, typename V>
class MapPair
{
    friend class Map<typename K, typename V>;
     ...

这个代码出了什么问题?我得到的错误是没有帮助的,但这里是

error: wrong number of template arguments (1, should be 2)
error: provided for ‘template<class K, class V> struct Map’
error: friend declaration does not name a class or function

有什么想法吗?

说出friend class Map<K, V>;typename只能用于限定从属名称,而KV不是。