Make C++ standard configurable
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6e9bc8b..b1f4436 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,12 +21,28 @@
 # Add a CMake parameter for choosing a desired Python version
 set(PYBIND11_PYTHON_VERSION "" CACHE STRING "Python version to use for compiling the example application")
 
-include(CheckCXXCompilerFlag)
-
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/tools")
 set(Python_ADDITIONAL_VERSIONS 3.4 3.5 3.6 3.7)
 find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} REQUIRED)
 
+include(CheckCXXCompilerFlag)
+
+if(NOT MSVC AND NOT PYBIND11_CPP_STANDARD)
+  check_cxx_compiler_flag("-std=c++14" HAS_CPP14_FLAG)
+  check_cxx_compiler_flag("-std=c++11" HAS_CPP11_FLAG)
+
+  if (HAS_CPP14_FLAG)
+    set(PYBIND11_CPP_STANDARD -std=c++14)
+  elseif (HAS_CPP11_FLAG)
+    set(PYBIND11_CPP_STANDARD -std=c++11)
+  else()
+    message(FATAL_ERROR "Unsupported compiler -- pybind11 requires C++11 support!")
+  endif()
+
+  set(PYBIND11_CPP_STANDARD ${PYBIND11_CPP_STANDARD} CACHE STRING
+      "C++ standard flag, e.g. -std=c++11 or -std=c++14. Defaults to latest available.")
+endif()
+
 # Cache variables so pybind11_add_module can be used in parent projects
 set(PYBIND11_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/include" CACHE INTERNAL "")
 set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} CACHE INTERNAL "")
@@ -67,16 +83,7 @@
 
   if(NOT MSVC)
     # Make sure C++11/14 are enabled
-    check_cxx_compiler_flag("-std=c++14" HAS_CPP14_FLAG)
-    check_cxx_compiler_flag("-std=c++11" HAS_CPP11_FLAG)
-
-    if (HAS_CPP14_FLAG)
-      target_compile_options(${target_name} PUBLIC "-std=c++14")
-    elseif (HAS_CPP11_FLAG)
-      target_compile_options(${target_name} PUBLIC "-std=c++11")
-    else()
-      message(FATAL_ERROR "Unsupported compiler -- pybind11 requires C++11 support!")
-    endif()
+    target_compile_options(${target_name} PUBLIC ${PYBIND11_CPP_STANDARD})
 
     # Enable link time optimization and set the default symbol
     # visibility to hidden (very important to obtain small binaries)