build: migrate to C++17

Change-Id: Ic9f09efd20b608bfcb713fd319834b2666cf6242
diff --git a/src/common.hpp b/src/common.hpp
index dd826ac..a0db086 100644
--- a/src/common.hpp
+++ b/src/common.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2022,  The University of Memphis,
  *                           Regents of the University of California
  *
  * This file is part of NLSR (Named-data Link State Routing).
@@ -26,6 +26,7 @@
 #include <functional>
 #include <iterator>
 #include <memory>
+#include <type_traits>
 #include <utility>
 
 #include <ndn-cxx/name.hpp>
@@ -36,7 +37,7 @@
 
 using namespace ndn::time_literals;
 
-const ndn::time::seconds TIME_ALLOWED_FOR_CANONIZATION = 4_s;
+constexpr ndn::time::seconds TIME_ALLOWED_FOR_CANONIZATION = 4_s;
 
 template<typename T, typename = void>
 struct is_iterator
@@ -47,9 +48,8 @@
 /*! Use C++11 iterator_traits to check if some type is an iterator
  */
 template<typename T>
-struct is_iterator<T, typename std::enable_if<!std::is_same<
-  typename std::iterator_traits<T>::value_type,
-  void>::value>::type>
+struct is_iterator<T, std::enable_if_t<!std::is_same_v<
+  typename std::iterator_traits<T>::value_type, void>>>
 {
   static constexpr bool value = true;
 };