有没有办法知道我是否在特定的Microsoft Visual Studio版本下进行编译?
有没有办法在编译时检测编译器是否支持C++ 11的某些功能?例如,像这样:
#ifndef VARIADIC_TEMPLATES_SUPPORTED
#error "Your compiler doesn't support variadic templates. :("
#else
template <typename... DatatypeList>
class Tuple
{
// ...
}
#endif
Run Code Online (Sandbox Code Playgroud) 我想知道在C++ 11中编写软件在Windows上的运行情况有多好.使用Windows的本机编译器之一是最舒适的(也是最自然的) - 我在这里考虑Visual Studio 2012 Express或Visual Studio 2013 Express.到目前为止我能找到的所有事情都是
有没有人有任何经验,当前的Visual Studio版本如何处理C++ 11?我真的想开始使用auto,lambdas,可变参数模板,模板别名,初始化列表和右值引用(仅举几例)和所有其他好东西,但如果Windows可能是一个问题,我可能不得不使用C++ 03进一步.
另一种可能性似乎是在Windows上安装LLVM和Clang.我的主要平台是OSX,在该系统上,Clang对C++ 11的支持非常好.但我读到,用于C++(libc ++)的标准库的LLVM版本在Windows上运行不正常.所以LLVM/clang可能不是一个选择.
您对Windows上的C++ 11开发有何看法?
谢谢!
任何人都知道为什么在我的Visual Studio 2012 c ++项目中__cplusplus定义为199711L(这是"旧的"C++)?不应该说,201103L因为VS 2012现在有C++ 11支持吗?即使我包含C++ 11标头,它仍然是错误定义的.有线索吗?