From ac943fcad42ddf12d522d0dc280a60e9b2b2cbb1 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 9 Jul 2018 13:06:18 +0200 Subject: Add c++17 mode (--std c++17), also translate to c++NN rather than gnu++NN --- odb/odb.cxx | 11 ++++++++--- odb/option-types.cxx | 7 +++++-- odb/option-types.hxx | 3 ++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/odb/odb.cxx b/odb/odb.cxx index f5dcd42..a10d1d2 100644 --- a/odb/odb.cxx +++ b/odb/odb.cxx @@ -646,17 +646,22 @@ main (int argc, char* argv[]) { case cxx_version::cxx98: { - args[3] = "-std=gnu++98"; + args[3] = "-std=c++98"; break; } case cxx_version::cxx11: { - args[3] = "-std=gnu++0x"; // gnu++11 was only added in GCC 4.7.0. + args[3] = "-std=c++0x"; // c++11 was only added in GCC 4.7.0. break; } case cxx_version::cxx14: { - args[3] = "-std=gnu++14"; + args[3] = "-std=c++1y"; + break; + } + case cxx_version::cxx17: + { + args[3] = "-std=c++1z"; break; } } diff --git a/odb/option-types.cxx b/odb/option-types.cxx index bd3736e..d2848a4 100644 --- a/odb/option-types.cxx +++ b/odb/option-types.cxx @@ -17,8 +17,9 @@ using namespace std; static const char* cxx_version_[] = { "c++98", - "c++11" - "c++14" + "c++11", + "c++14", + "c++17" }; string cxx_version:: @@ -41,6 +42,8 @@ operator>> (istream& is, cxx_version& v) v = cxx_version::cxx11; else if (s == "c++14") v = cxx_version::cxx14; + else if (s == "c++17") + v = cxx_version::cxx17; else is.setstate (istream::failbit); } diff --git a/odb/option-types.hxx b/odb/option-types.hxx index 8ff85a9..dc8cbe2 100644 --- a/odb/option-types.hxx +++ b/odb/option-types.hxx @@ -22,7 +22,8 @@ struct cxx_version { cxx98, cxx11, - cxx14 + cxx14, + cxx17 }; cxx_version (value v = value (0)) : v_ (v) {} -- cgit v1.1