Take a look at this code.
#include <vector> template<class ...Args> using other_vector = std::vector<Args...>; template<class T> void f(std::vector<T>& ) {} template<class T> void f(other_vector<T>& ) {} int main() { other_vector<int> b; f(b); return 0; }
It does not compile because f updated. I fully understand the error. However, I need a second class that behaves like std::vector<T> , but will be treated as a different type, so that overloading, as in the above example, would be legal.
What can I do?
- Let the new class have
std::vector<T> as the base class. This may work, but does not need to inherit from std containers. - Suppose a new class has a member of type std :: vector, and then overrides all functions to redirect to member functions. Sounds like a lot of work.
Any better alternative? C ++ 11 or C ++ 14 are allowed.
source share