你能在 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));
}
我想对 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));
}