我有一个派生自std::map<...>
的类,但我无法弄清楚如何让它继承所有map的构造函数(使用VS2013)。
代码:
template<class To>
class Map : public std::map<istring, To> {
public:
using std::map::map;
};
制作'std::map' : use of class template requires template argument list
。
尝试不同类型:
template<class N, class M>
class A {
public:
explicit A(int x) {}
};
class B : public A<int, int> {
using A::A; // Ok
};
template<class M>
class C : public A<int, M> {
using A::A; // An internal error has occurred in the compiler.
using A<int, M>::A; // 'A<int,M>' : symbol cannot be used in a member using-declaration
};
添加命名空间:
namespace a {
template<class N, class M>
class A {
public:
explicit A(int x) {}
};
}
template<class M>
class C : public a::A<int, M> {
using a::A::A; // Ok
};
更新:似乎VC2013根本不支持继承构造函数?
class A {
public:
A(int x) {}
};
class B : public A {
public:
using A::A;
};
B b(3); // 'B::B(const B &)' : cannot convert argument 1 from 'int' to 'const B &'