【问题标题】:Is there a way to use delegating constructors in Visual Studio 2012?有没有办法在 Visual Studio 2012 中使用委托构造函数?
【发布时间】:2013-01-04 03:54:58
【问题描述】:

纵观 C++11 的新特性,委托构造函数似乎在我的情况下特别有用。

很遗憾,我需要使用 Visual Studio。我正在从事的项目有几个月的截止日期,使用实验性/损坏的编译器与我无关。是否有可以让我进行构造函数委托的 Visual C++ 版本?

http://www.stroustrup.com/C++11FAQ.html#inheriting

【问题讨论】:

  • 您的问题有些混乱——不要将构造函数的继承与 C++11 的委托构造函数特性混为一谈。我已经删除了您指向前者的链接,因为您实际上是在询问后者。

标签: c++ visual-studio visual-c++ c++11 visual-studio-2012


【解决方案1】:

是的,有一个支持委托构造函数的编译器测试版 - Visual C++ Compiler November 2012 CTP

【讨论】:

  • Careful, though: the VS 2012 IDE, Intellisense, debugger, static analysis, and other tools remain essentially unchanged and do not yet provide support for these new C++11 features.
  • 这是作为更新 1 发布的吗?我似乎无法让它占用我的代码。我们如何真正得到它来编译代码?将其作为文本文件传入?
  • @Mikhail 这将作为更新 2 发布。目前,它只是一个 CTP。
  • 它可以作为编译器添加到VS中。在下载页面查看信息。
  • 它不是任何“更新”的一部分,也永远不会是。 CTP 保持原样,需要安装除了最新更新。但是,VS2013 支持所有 CTP 功能等等。
【解决方案2】:

同时,试试

#define INHERIT_CONSTRUCTOR(BaseName,DerivedName) template <class... Args> DerivedName(Args&&... args) : BaseName(std::forward<Args>(args)...) { }

【讨论】:

  • 这看起来很简单。紧凑的解决方案。我现在正在尝试。 IntelliSense 很高兴。我还没有编译(暂时不会编译——代码还不够成熟),不会的。那里一定有什么陷阱,还没有找到。
【解决方案3】:

通过上面由 Karel Petranek 提供的链接成功安装 CTP 后,只需创建任何旧的 C++ 项目。

然后,在项目的“Property Pages > Configuration Properties > General > Platform Toolset”下,选择“Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)”。

就是这样。现在您可以访问these additional C++ compiler features in VS2012

【讨论】:

    【解决方案4】:

    您不必再安装 CTP。
    Visual Studio 2013 将支持委托构造函数,您可以尝试现在可用的预览版。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      相关资源
      最近更新 更多