diff mbox

fix namespaces for std::experimental types

Message ID 20140623221241.GH8592@redhat.com
State New
Headers show

Commit Message

Jonathan Wakely June 23, 2014, 10:12 p.m. UTC
The current Fundamentals TS says any, optional and string_view should
be in an inline namespace called fundamentals_v1.

Tested x86_64-linux, committed to trunk.
diff mbox

Patch

commit 3b316b60d21ea224c56bb23a8e1afb06e2277cf8
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Jun 23 21:34:29 2014 +0100

    	* include/experimental/any (any_v1): Rename namespace to
    	fundamentals_v1. Change string returned by bad_any_cast::what().
    	* include/experimental/optional (fundamentals_v1): Add namespace.
    	* include/experimental/string_view (fundamentals_v1): Likewise.
    	* testsuite/experimental/any/typedefs.cc: New.
    	* testsuite/experimental/optional/typedefs.cc: New.
    	* testsuite/experimental/string_view/typedefs.cc: New.

diff --git a/libstdc++-v3/include/experimental/any b/libstdc++-v3/include/experimental/any
index 1e8d9b2..643fc23 100644
--- a/libstdc++-v3/include/experimental/any
+++ b/libstdc++-v3/include/experimental/any
@@ -47,7 +47,7 @@  namespace std _GLIBCXX_VISIBILITY(default)
 {
 namespace experimental
 {
-inline namespace any_v1
+inline namespace fundamentals_v1
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
@@ -68,7 +68,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
   class bad_any_cast : public bad_cast
   {
   public:
-    virtual const char* what() const noexcept { return "bad_any_cast"; }
+    virtual const char* what() const noexcept { return "bad any_cast"; }
   };
 
   [[gnu::noreturn]] inline void __throw_bad_any_cast()
@@ -604,7 +604,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   // @} group any
 _GLIBCXX_END_NAMESPACE_VERSION
-} // namespace any_v1
+} // namespace fundamentals_v1
 } // namespace experimental
 } // namespace std
 
diff --git a/libstdc++-v3/include/experimental/optional b/libstdc++-v3/include/experimental/optional
index 2a3f29d..c68d7ea 100644
--- a/libstdc++-v3/include/experimental/optional
+++ b/libstdc++-v3/include/experimental/optional
@@ -52,6 +52,8 @@  namespace std _GLIBCXX_VISIBILITY(default)
 {
 namespace experimental
 {
+inline namespace fundamentals_v1
+{
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /**
@@ -797,6 +799,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   // @} group optional
 _GLIBCXX_END_NAMESPACE_VERSION
+} // namespace fundamentals_v1
 }
 
   // [X.Y.12]
diff --git a/libstdc++-v3/include/experimental/string_view b/libstdc++-v3/include/experimental/string_view
index b54c9e8..4b1a107 100644
--- a/libstdc++-v3/include/experimental/string_view
+++ b/libstdc++-v3/include/experimental/string_view
@@ -46,6 +46,8 @@  namespace std _GLIBCXX_VISIBILITY(default)
 {
 namespace experimental
 {
+inline namespace fundamentals_v1
+{
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /**
@@ -582,6 +584,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
 
 _GLIBCXX_END_NAMESPACE_VERSION
+} // namespace fundamentals_v1
 } // namespace experimental
 
 
diff --git a/libstdc++-v3/testsuite/experimental/any/typedefs.cc b/libstdc++-v3/testsuite/experimental/any/typedefs.cc
new file mode 100644
index 0000000..a3f364d
--- /dev/null
+++ b/libstdc++-v3/testsuite/experimental/any/typedefs.cc
@@ -0,0 +1,30 @@ 
+// { dg-options "-std=gnu++14" }
+// { dg-do compile }
+
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a moved_to of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <experimental/any>
+#include <type_traits>
+#include <typeinfo>
+
+using check1_t = std::experimental::fundamentals_v1::any;
+using check2_t = std::experimental::fundamentals_v1::bad_any_cast;
+
+static_assert(std::is_base_of<std::bad_cast, check2_t>::value,
+	      "bad_any_cast must derive from bad_cast");
+
diff --git a/libstdc++-v3/testsuite/experimental/optional/typedefs.cc b/libstdc++-v3/testsuite/experimental/optional/typedefs.cc
new file mode 100644
index 0000000..2dee878
--- /dev/null
+++ b/libstdc++-v3/testsuite/experimental/optional/typedefs.cc
@@ -0,0 +1,33 @@ 
+// { dg-options "-std=gnu++14" }
+// { dg-do compile }
+
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a moved_to of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <experimental/optional>
+#include <type_traits>
+#include <stdexcept>
+
+template<typename T>
+  using check1_t = std::experimental::fundamentals_v1::optional<T>;
+
+using check2_t = std::experimental::fundamentals_v1::in_place_t;
+using check3_t = std::experimental::fundamentals_v1::nullopt_t;
+using check4_t = std::experimental::fundamentals_v1::bad_optional_access;
+
+static_assert(std::is_base_of<std::logic_error, check4_t>::value,
+	      "bad_optional_access must derive from logic_error");
diff --git a/libstdc++-v3/testsuite/experimental/string_view/typedefs.cc b/libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
new file mode 100644
index 0000000..f148a17
--- /dev/null
+++ b/libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
@@ -0,0 +1,36 @@ 
+// { dg-options "-std=gnu++14" }
+// { dg-do compile }
+
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a moved_to of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <experimental/string_view>
+
+template<typename C, typename T>
+  using check1_t = std::experimental::fundamentals_v1::basic_string_view<C, T>;
+
+using check2_t = std::experimental::fundamentals_v1::string_view;
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+using check3_t = std::experimental::fundamentals_v1::u16string_view;
+using check4_t = std::experimental::fundamentals_v1::u32string_view;
+#endif
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+using check5_t = std::experimental::fundamentals_v1::wstring_view;
+#endif
+