Index: cmake/modules/CheckCompilerVersion.cmake =================================================================== --- cmake/modules/CheckCompilerVersion.cmake +++ cmake/modules/CheckCompilerVersion.cmake @@ -1,5 +1,5 @@ # Check if the host compiler is new enough. LLVM requires at least GCC 4.8, -# MSVC 2013, or Clang 3.1. +# MSVC 2015 (Update 3), or Clang 3.1. include(CheckCXXSourceCompiles) @@ -17,8 +17,8 @@ endif() if (CMAKE_CXX_SIMULATE_ID MATCHES "MSVC") - if (CMAKE_CXX_SIMULATE_VERSION VERSION_LESS 18.0) - message(FATAL_ERROR "Host Clang must have at least -fms-compatibility-version=18.0") + if (CMAKE_CXX_SIMULATE_VERSION VERSION_LESS 19.0) + message(FATAL_ERROR "Host Clang must have at least -fms-compatibility-version=19.0") endif() set(CLANG_CL 1) elseif(NOT LLVM_ENABLE_LIBCXX) @@ -41,10 +41,10 @@ set(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES}) endif() elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0) - message(FATAL_ERROR "Host Visual Studio must be at least 2013") - elseif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.31101) - message(WARNING "Host Visual Studio should at least be 2013 Update 4 (MSVC 18.0.31101)" + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0) + message(FATAL_ERROR "Host Visual Studio must be at least 2015") + elseif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.00.24215.1) + message(WARNING "Host Visual Studio should at least be 2015 Update 3 (MSVC 19.00.24215.1)" " due to miscompiles from earlier versions") endif() endif() Index: docs/CodingStandards.rst =================================================================== --- docs/CodingStandards.rst +++ docs/CodingStandards.rst @@ -127,17 +127,12 @@ * Variadic templates: N2242_ * Explicit conversion operators: N2437_ * Defaulted and deleted functions: N2346_ - - * But not defaulted move constructors or move assignment operators, MSVC 2013 - cannot synthesize them. * Initializer lists: N2627_ * Delegating constructors: N1986_ * Default member initializers (non-static data member initializers): N2756_ - * Only use these for scalar members that would otherwise be left - uninitialized. Non-scalar members generally have appropriate default - constructors, and MSVC 2013 has problems when braced initializer lists are - involved. + * Feel free to use these wherever they make sense and where the `=` + syntax is allowed. Don't use braced initialization syntax. .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm Index: docs/GettingStarted.rst =================================================================== --- docs/GettingStarted.rst +++ docs/GettingStarted.rst @@ -262,7 +262,7 @@ * Clang 3.1 * GCC 4.8 -* Visual Studio 2013 +* Visual Studio 2015 (Update 3) Anything older than these toolchains *may* work, but will require forcing the build system with a special option and is not really a supported host platform. @@ -296,7 +296,7 @@ This section mostly applies to Linux and older BSDs. On Mac OS X, you should have a sufficiently modern Xcode, or you will likely need to upgrade until you -do. On Windows, just use Visual Studio 2013 as the host compiler, it is +do. On Windows, just use Visual Studio 2015 as the host compiler, it is explicitly supported and widely available. FreeBSD 10.0 and newer have a modern Clang as the system compiler. Index: docs/GettingStartedVS.rst =================================================================== --- docs/GettingStartedVS.rst +++ docs/GettingStartedVS.rst @@ -39,13 +39,13 @@ Hardware -------- -Any system that can adequately run Visual Studio 2013 is fine. The LLVM +Any system that can adequately run Visual Studio 2015 is fine. The LLVM source tree and object files, libraries and executables will consume approximately 3GB. Software -------- -You will need Visual Studio 2013 or higher, with the latest Update installed. +You will need Visual Studio 2015 or higher, with at least Update 3 installed. You will also need the `CMake `_ build system since it generates the project files you will use to build with.