代码之家  ›  专栏  ›  技术社区  ›  stimulate

为什么我的Visual Studio 2017编译器不识别C++17类型推导指南

  •  1
  • stimulate  · 技术社区  · 7 年前

    我的Visual Studio 2017不会识别此代码中的类型推断指南,也不会编译:

    template<typename T>
    class Example{
    public:
        Example(T& pVal)
            :val(pVal){}
        T& val;
    };
    //type deduction guide for Example constructor
    template<typename T>
    Example(T&)->Example<T>;
    

    尽管如此,根据我的 sources

    如何修改Visual Studio C++编译器以识别此功能?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Yakk - Adam Nevraumont    7 年前

    升级编译器。

    我们先等等。阅读发行说明,我在更新3、4或5的预览中没有看到它。

    MSVC中的支持仍然是实验性的和不完整的。 支持仅仅仍然不完整(主要在SFINAE周围),但不再是实验性的。

    Visual studio附带了混合的clang和microsoft编译器。 当MSVC将其更新到clang 5.0编译器时,应该支持这一点(我上次检查它是3.8)。

    Clang 5 LLVM

    将visual studio修改为使用Clang 5不仅仅是一项工作。您可以做的一件事是编写一个系统,从一些依赖项和项目描述文件构建vcproj和makefile。在编辑代码时,使用makefile进行构建,使用vcproj只需启用intellisense(我相信它不会理解您的推导指南)。(我在一些地方工作过,这些地方大致相当于python、批处理文件、makefile本身,有时甚至是C#)的组合)。

    这(创建自己的构建链)本身就是一个项目。

    我见过的另一种工作方法是生成 项目文件 文件和手工制作 生成文件