从模板基类继承构造函数

时间:2015-07-06 12:21:44

标签: c++ visual-studio-2010 c++11 inheritance visual-studio-2013

我有一个派生自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 &'

0 个答案:

没有答案