Use more C++17 features

Mainly structured bindings, inline variables, and class template
argument deduction, plus many more smaller things.

Change-Id: I810d17e0adb470426e4e30c898e03b3140ad052f
diff --git a/tools/nfdc/rib-module.cpp b/tools/nfdc/rib-module.cpp
index df980c4..5ed8553 100644
--- a/tools/nfdc/rib-module.cpp
+++ b/tools/nfdc/rib-module.cpp
@@ -203,9 +203,7 @@
       return;
     }
 
-    std::optional<FaceUri> canonized;
-    std::string error;
-    std::tie(canonized, error) = canonize(ctx, *faceUri);
+    auto [canonized, error] = canonize(ctx, *faceUri);
     if (!canonized) {
       // Canonization failed
       auto canonizationError = canonizeErrorHelper(*faceUri, error);