为什么我的Visual Studio 2017年编译器无法识别C++ 17型扣指导
我的Visual Studio 2017年不会致使识别此代码,不需额外编译类型演绎指南:为什么我的Visual Studio 2017年编译器无法识别C++ 17型扣指导
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,这应该是一个C++ 17类型演绎指南的正确语法,并且它在与它应该指导的类相同的范围内定义。
如何修改我的Visual Studio C++编译器来识别这个功能吗?
升级你的编译器。
那么先等一下。阅读发行说明,我没有看到它在更新3,4或在MSVC 5.
c++17支持预览仍然实验和不完整的。 c++14和c++11支持仅仅是不完整的(主要在SFINAE附近),但不再是实验性的。
Visual Studio中附带的混合铛和微软的编译器。 clang-c2应该支持这个,当MSVC更新到铿锵5.0编译器(最后我检查它是3.8)。
Clang 5 LLVM窗户可以下载,但它与Visual Studio集成是具有挑战性的,你想做的事可能根本不起作用一些事情。但它确实支持演绎指南。
修改Visual Studio来使用锵5比一些工作了。你可以做的一件事是编写一个系统,从一些依赖和项目描述文件中构建vcproj和makefile。编辑代码时,使用makefiles进行编译,而vcproj只是为了启用intellisense(我不相信您的演绎指南)。 (我曾经在python,批处理文件,makefiles本身以及有时甚至是C#的大致相同的地方工作过)。
这(创建自己的身材链)本身就是一个项目。
另一种方法我见过的工作是产生vcproj文件,以及手工工艺的makefile文件秒。如果你的项目目录结构足够简单,编写一个足够好的智能感知的vcproj不会很难。
英特尔C++编译器具有VS集成功能,并且在C++ 14/17领域也做得更好。它缺少一些功能(或者在某些结构上有缺陷)。 –
不幸的是,Clang/C2不会收到任何更新https://developercommunity.visualstudio.com/content/problem/34693/clangc2-version-getting-old.html#reply-167512 –
您是否检查过您的Visual Studio版本的C++ 1z支持?编译器必须添加功能。他们不会神奇地意识到新的标准修订。 – StoryTeller
[案例和要点](https://blogs.msdn.microsoft.com/vcblog/2017/05/10/c17-features-in-vs-2017-3/):**模板参数扣除类模板* *状态 - 否。 – StoryTeller
这里是[官方文档](https://docs.microsoft.com/en-us/cpp/visual-cpp-language-conformance)和(通常是最新的)[来自cppreference的页面](http ://en.cppreference.com/w/cpp/compiler_support) – UnholySheep