你能在 C++ 中为模板成员起别名吗?

Can you alias a template members in C++?

我想对 stl 的某些部分进行重命名或别名,以便它们符合我项目的命名约定。 到目前为止重命名类型很容易

template<class Type>
using Vector = std::vector<Type>;

我试过做类似于别名成员的事情:

template<class Type>
using Vector::PushBack = std::vector<Type>::push_back;
// and
template<class Type>
using Vector<Type>::PushBack = std::vector<Type>::push_back;

遗憾的是,这种方法不适用于成员变量。 我可以别名成员吗?怎么样?

不,您不能为成员变量起别名。

比照https://docs.microsoft.com/en-us/cpp/cpp/aliases-and-typedefs-cpp?view=vs-2019:"You can use an alias declaration to declare a name to use as a synonym for a previously declared type"

给变量起别名有什么意义,因为您可以直接调用它?

你只能alias types or type templates。成员函数不是类型,因此您不能为它起别名。但是你可以为它做一个代理:

template <typename T>
auto push_back(std::vector<T>& vec, T&& val)
{
    return vec.push_back(std::forward<T>(val));
}