Require C++11 *or later* (#5020)

Allow externally setting CMAKE_CXX_STANDARD to 14, for example,
which is needed to build protobufs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7815a29..63eeae8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,7 +31,15 @@
 include(GNUInstallDirs)
 
 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-set(CMAKE_CXX_STANDARD 11)
+
+# Require at least C++11
+if(NOT CMAKE_CXX_STANDARD)
+  set(CMAKE_CXX_STANDARD 11)
+endif()
+if(${CMAKE_CXX_STANDARD} LESS 11)
+  message(FATAL_ERROR "SPIRV-Tools requires C++11 or later, but is configured for C++${CMAKE_CXX_STANDARD})")
+endif()
+
 
 option(ENABLE_RTTI "Enables RTTI" OFF)
 option(SPIRV_ALLOW_TIMERS "Allow timers via clock_gettime on supported platforms" ON)