`using std::unique_ptr<T>::unique_ptr` 在 Visual Studio 2013 中构建错误

Build error in Visual Studio 2013 with `using std::unique_ptr<T>::unique_ptr`

我正在尝试更新一些源代码以使其与 Visual Studio 2013 兼容。

有时我在以下模板上出错:

// Means of generating a key for searching STL collections of std::unique_ptr
// that avoids the side effect of deleting the pointer.
template <class T>
class FakeUniquePtr : public std::unique_ptr<T> {
 public:
  using std::unique_ptr<T>::unique_ptr;
  ~FakeUniquePtr() { std::unique_ptr<T>::release(); }
};

我收到以下错误:

error C2886: 'unique_ptr<_Ty,std::default_delete<_Ty>>' : symbol cannot be used in a member using-declaration

我想知道如何调整此代码以使其与 Visual Studio 2013 兼容,以及该代码的含义是什么。我如何更新它以使代码与 VS2013 兼容?

根据这篇 Microsoft 博客文章:https://devblogs.microsoft.com/cppblog/c1114-core-language-features-in-vs-2013-and-the-nov-2013-ctp/ 此功能称为 "inheriting constructors",在 Visual Studio 2013 的常规版本中不可用(该文章提到了 2013 年 11 月的 CTP构建,确实支持它)
如果没有此功能,您将不得不编写调用等效 std::unique_ptr 构造函数的构造函数(这将使 class 更加冗长),例如:

template <class T>
class FakeUniquePtr : public std::unique_ptr<T> {
 private:
  // typedef to minimize writing std::unique_ptr<T>
  typedef std::unique_ptr<T> base; 
 public:
  FakeUniquePtr() : base(){}
  // repeat for all other constructors
  ~FakeUniquePtr() { base::release(); }
};