C++ 中奇怪的命名空间概念

Weird namespace concept in c++

我遇到了这个:

template<class T> using PQ = priority_queue<T>;

我无法理解发生了什么,所以我尝试转到源代码并自己复制它:

template<class T> class I_Love_You {
    public:
    static void print() {
        cout << "Hello Whosebug!" << endl;
    }
};

template<class F> using We_are_just_friends = I_Love_You<F>;

void solve() {
    We_are_just_friends<int>::print();
}

这是怎么回事? priority_queue 是在 c++ 文件中定义的模板 class 定义,然后在创建 .exe 时在 c++ 中进行链接。 但是这个 using 和 template 是什么以及我如何分配模板以及通过 using 创建或定义命名空间到底发生了什么?请有人帮我分解一下。

template<class T> using PQ = priority_queue<T>;

priority_queue是一个模板类型,所以我们总是要为它指定一个类型。

如果我们为其创建别名,PQpriority_queue 仍然需要知道它的类型。所以我们声明 PQ 一个模板,并将传递给 PQ 的值传递给 priority_queue.