diff --git a/CMakeLists.txt b/CMakeLists.txt
index 79d7a57..d798477 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,7 @@ option(WITH_MYSQL "Build MySQL library" ON)
 OPTION(WITH_CASSANDRA "Build Cassandra library" ON)
 
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -ftemplate-depth=256")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z -ftemplate-depth=256")
 if(APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations -Wno-deprecated-register -Wno-macro-redefined")
     set(CMAKE_LINK_FLAGS "${CMAKE_LINK_FLAGS} -stdlib=libc++")
diff --git a/include/fibio/utility.hpp b/include/fibio/utility.hpp
index b7b99e8..a620840 100644
--- a/include/fibio/utility.hpp
+++ b/include/fibio/utility.hpp
@@ -71,8 +71,8 @@ struct make_tuple_indices
     typedef typename make_indices_imp<Sp, tuple_indices<>, Ep>::type type;
 };
 
-#if defined(_WIN32) && (_MSC_VER >= 1900)
-// Visual C++ 2015 supports C++17 std::invoke
+#if (defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER >= 1900)) || defined(__cpp_lib_invoke)
+// Uses std::invoke when available, Visual C++ 2015 supports std::invoke but not feature test macros
 using std::invoke;
 #else