drop c++ version for cmake build to 11

Change-Id: If4f1d021a19c7be43fa1996705a493bf33ec1dbe
Reviewed-on: https://swiftshader-review.googlesource.com/c/23809
Tested-by: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 088be06..cb417fd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -198,7 +198,7 @@
     set_cpp_flag("/MP")
     add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 else()
-    set_cpp_flag("--std=c++14")
+    set_cpp_flag("--std=c++11")
     set_cpp_flag("-Wall")
     set_cpp_flag("-Werror=reorder")
     set_cpp_flag("-Werror=sign-compare")
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp
index 28a0245..06123ab 100644
--- a/src/Pipeline/SpirvShader.hpp
+++ b/src/Pipeline/SpirvShader.hpp
@@ -22,6 +22,7 @@
 #include <vector>
 #include <unordered_map>
 #include <cstdint>
+#include <type_traits>
 #include <spirv/unified1/spirv.hpp>
 
 namespace sw
@@ -216,8 +217,10 @@
 		Modes modes;
 		std::unordered_map<uint32_t, Object> types;
 		std::unordered_map<uint32_t, Object> defs;
-		std::unordered_map<spv::BuiltIn, BuiltinMapping> inputBuiltins;
-		std::unordered_map<spv::BuiltIn, BuiltinMapping> outputBuiltins;
+
+		using BuiltInHash = std::hash<std::underlying_type<spv::BuiltIn>::type>;
+		std::unordered_map<spv::BuiltIn, BuiltinMapping, BuiltInHash> inputBuiltins;
+		std::unordered_map<spv::BuiltIn, BuiltinMapping, BuiltInHash> outputBuiltins;
 
 		Object const &getType(uint32_t id) const
 		{