OSDN Git Service

2010-02-16 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Feb 2010 05:43:24 +0000 (05:43 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Feb 2010 05:43:24 +0000 (05:43 +0000)
* src/ios_locale.cc: Fixes for -pedantic.
* src/system_error.cc: Same.
* src/locale.cc: Same.
* src/list.cc: Same.
* src/locale_facets.cc: Same.
* src/locale_init.cc: Same.
* src/ios.cc: Same.
* config/locale/darwin/ctype_members.cc: Same.
* config/locale/gnu/collate_members.cc: Same.
* config/locale/gnu/ctype_members.cc: Same.
* config/locale/gnu/c_locale.cc: Same.
* config/locale/gnu/monetary_members.cc: Same.
* config/locale/gnu/time_members.cc: Same.
* config/locale/ieee_1003.1-2001/c_locale.cc: Same.
* config/locale/generic/collate_members.cc: Same.
* config/locale/generic/ctype_members.cc: Same.
* config/locale/generic/c_locale.cc: Same.
* config/locale/generic/monetary_members.cc: Same.
* config/locale/generic/time_members.cc: Same.
* config/io/basic_file_stdio.cc: Same.

* libsupc++/pbase_type_info.cc: Fixes for -fno-rtti.
* libsupc++/pointer_type_info.cc: Same.
* libsupc++/eh_personality.cc: Same.

* include/std/system_error: Throw spacing.
* include/bits/locale_classes.h: Same.
* include/bits/locale_facets.h: Same.
* include/bits/ios_base.h: Same.

* testsuite/17_intro/headers/c++200x/all_no_rtti.cc: New.
* testsuite/17_intro/headers/c++1998/all_no_rtti.cc: New

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156822 138bc75d-0d04-0410-961f-82ee72b054a4

30 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config/io/basic_file_stdio.cc
libstdc++-v3/config/locale/darwin/ctype_members.cc
libstdc++-v3/config/locale/generic/c_locale.cc
libstdc++-v3/config/locale/generic/collate_members.cc
libstdc++-v3/config/locale/generic/ctype_members.cc
libstdc++-v3/config/locale/generic/monetary_members.cc
libstdc++-v3/config/locale/generic/time_members.cc
libstdc++-v3/config/locale/gnu/c_locale.cc
libstdc++-v3/config/locale/gnu/collate_members.cc
libstdc++-v3/config/locale/gnu/ctype_members.cc
libstdc++-v3/config/locale/gnu/monetary_members.cc
libstdc++-v3/config/locale/gnu/time_members.cc
libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
libstdc++-v3/include/bits/ios_base.h
libstdc++-v3/include/bits/locale_classes.h
libstdc++-v3/include/bits/locale_facets.h
libstdc++-v3/include/std/system_error
libstdc++-v3/libsupc++/eh_personality.cc
libstdc++-v3/libsupc++/pbase_type_info.cc
libstdc++-v3/libsupc++/pointer_type_info.cc
libstdc++-v3/src/ios.cc
libstdc++-v3/src/ios_locale.cc
libstdc++-v3/src/list.cc
libstdc++-v3/src/locale.cc
libstdc++-v3/src/locale_facets.cc
libstdc++-v3/src/locale_init.cc
libstdc++-v3/src/system_error.cc
libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc [new file with mode: 0644]
libstdc++-v3/testsuite/17_intro/headers/c++200x/all_no_rtti.cc [new file with mode: 0644]

index 7ea3348..99e78f5 100644 (file)
@@ -1,3 +1,38 @@
+2010-02-16  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * src/ios_locale.cc: Fixes for -pedantic.
+       * src/system_error.cc: Same.
+       * src/locale.cc: Same.
+       * src/list.cc: Same.
+       * src/locale_facets.cc: Same.
+       * src/locale_init.cc: Same.
+       * src/ios.cc: Same.
+       * config/locale/darwin/ctype_members.cc: Same.
+       * config/locale/gnu/collate_members.cc: Same.
+       * config/locale/gnu/ctype_members.cc: Same.
+       * config/locale/gnu/c_locale.cc: Same.
+       * config/locale/gnu/monetary_members.cc: Same.
+       * config/locale/gnu/time_members.cc: Same.
+       * config/locale/ieee_1003.1-2001/c_locale.cc: Same.
+       * config/locale/generic/collate_members.cc: Same.
+       * config/locale/generic/ctype_members.cc: Same.
+       * config/locale/generic/c_locale.cc: Same.
+       * config/locale/generic/monetary_members.cc: Same.
+       * config/locale/generic/time_members.cc: Same.
+       * config/io/basic_file_stdio.cc: Same.
+
+       * libsupc++/pbase_type_info.cc: Fixes for -fno-rtti.
+       * libsupc++/pointer_type_info.cc: Same.
+       * libsupc++/eh_personality.cc: Same.
+
+       * include/std/system_error: Throw spacing.
+       * include/bits/locale_classes.h: Same.
+       * include/bits/locale_facets.h: Same.
+       * include/bits/ios_base.h: Same.
+
+       * testsuite/17_intro/headers/c++200x/all_no_rtti.cc: New.
+       * testsuite/17_intro/headers/c++1998/all_no_rtti.cc: New.
+
 2010-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/bits/random.h (linear_congruential_engine(_Sseq&),
index b07a483..472f123 100644 (file)
@@ -1,6 +1,6 @@
 // Wrapper of C-language FILE struct -*- C++ -*-
 
-// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -182,7 +182,7 @@ namespace
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   // Definitions for __basic_file<char>.
-  __basic_file<char>::__basic_file(__c_lock* /*__lock*/) 
+  __basic_file<char>::__basic_file(__c_lock* /*__lock*/) throw()
   : _M_cfile(NULL), _M_cfile_created(false) { }
 
   __basic_file<char>::~__basic_file()
index 2f5268c..e1dd0f2 100644 (file)
@@ -1,6 +1,6 @@
 // std::ctype implementation details, GNU version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -55,7 +55,7 @@ namespace std
 
 #ifdef _GLIBCXX_USE_WCHAR_T  
   ctype<wchar_t>::__wmask_type
-  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const throw()
   {
     // Darwin uses the same codes for 'char' as 'wchar_t', so this routine
     // never gets called.
@@ -150,7 +150,7 @@ namespace std
   }
 
   void
-  ctype<wchar_t>::_M_initialize_ctype()
+  ctype<wchar_t>::_M_initialize_ctype() throw()
   {
     wint_t __i;
     for (__i = 0; __i < 128; ++__i)
index a79a970..4ae951e 100644 (file)
@@ -1,6 +1,6 @@
 // Wrapper for underlying C-language localization -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -46,8 +46,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   template<>
     void
-    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-                  const __c_locale&)         
+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
+                  const __c_locale&) throw()
     {
       // Assumes __s formatted for "C" locale.
       char* __old = setlocale(LC_ALL, NULL);
@@ -111,8 +111,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   template<>
     void
-    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-                  const __c_locale&) 
+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
+                  const __c_locale&) throw()
     {
       // Assumes __s formatted for "C" locale.
       char* __old = setlocale(LC_ALL, NULL);
@@ -139,7 +139,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 #if __DBL_HAS_INFINITY__
               __v == numeric_limits<double>::infinity()
               || __v == -numeric_limits<double>::infinity())
-#else          
+#else
               (__v > 1.0 || __v < -1.0) && errno == ERANGE)
 #endif
        {
@@ -156,8 +156,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   template<>
     void
-    __convert_to_v(const char* __s, long double& __v, 
-                  ios_base::iostate& __err, const __c_locale&) 
+    __convert_to_v(const char* __s, long double& __v,
+                  ios_base::iostate& __err, const __c_locale&) throw()
     {
       // Assumes __s formatted for "C" locale.
       char* __old = setlocale(LC_ALL, NULL);
@@ -189,10 +189,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        }
        else if (
 #if __LDBL_HAS_INFINITY__
-               __v == numeric_limits<long double>::infinity()
-               || __v == -numeric_limits<long double>::infinity())
+               __v == numeric_limits<long double>::infinity()
+               || __v == -numeric_limits<long double>::infinity())
 #else
-               (__v > 1.0l || __v < -1.0l) && errno == ERANGE)
+               (__v > 1.0l || __v < -1.0l) && errno == ERANGE)
 #endif
        {
          if (__v > 0.0l)
@@ -207,7 +207,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     }
 
   void
-  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 
+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
                                    __c_locale)
   {
     // Currently, the generic model only supports the "C" locale.
@@ -223,7 +223,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   { __cloc = NULL; }
 
   __c_locale
-  locale::facet::_S_clone_c_locale(__c_locale&)
+  locale::facet::_S_clone_c_locale(__c_locale&) throw()
   { return __c_locale(); }
 
   __c_locale
@@ -236,10 +236,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
 
   const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
     {
-      "LC_CTYPE", 
+      "LC_CTYPE",
       "LC_NUMERIC",
-      "LC_TIME",   
-      "LC_COLLATE", 
+      "LC_TIME",
+      "LC_COLLATE",
       "LC_MONETARY",
       "LC_MESSAGES"
     };
index be3ee64..e7753e0 100644 (file)
@@ -1,6 +1,6 @@
 // std::collate implementation details, generic version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -38,7 +38,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // be put there instead of here.
   template<>
     int 
-    collate<char>::_M_compare(const char* __one, const char* __two) const
+    collate<char>::_M_compare(const char* __one, 
+                             const char* __two) const throw()
     { 
       int __cmp = strcoll(__one, __two);
       return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
@@ -47,14 +48,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     size_t
     collate<char>::_M_transform(char* __to, const char* __from, 
-                               size_t __n) const
+                               size_t __n) const throw()
     { return strxfrm(__to, __from, __n); }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<>
     int 
     collate<wchar_t>::_M_compare(const wchar_t* __one, 
-                                const wchar_t* __two) const
+                                const wchar_t* __two) const throw()
     {
       int __cmp = wcscoll(__one, __two);
       return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
@@ -63,7 +64,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     size_t
     collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-                                  size_t __n) const
+                                  size_t __n) const throw()
     { return wcsxfrm(__to, __from, __n); }
 #endif
 
index 39671f6..ae08c3b 100644 (file)
@@ -1,6 +1,6 @@
 // std::ctype implementation details, generic version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -53,7 +53,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
 #ifdef _GLIBCXX_USE_WCHAR_T  
   ctype<wchar_t>::__wmask_type
-  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const throw()
   {
     __wmask_type __ret;
     switch (__m)
@@ -239,7 +239,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 
   void
-  ctype<wchar_t>::_M_initialize_ctype()
+  ctype<wchar_t>::_M_initialize_ctype() throw()
   {
     wint_t __i;
     for (__i = 0; __i < 128; ++__i)
index 9c03f68..26b4358 100644 (file)
@@ -1,6 +1,7 @@
 // std::moneypunct implementation details, generic version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// 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
@@ -35,10 +36,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // Construct and return valid pattern consisting of some combination of:
   // space none symbol sign value
   money_base::pattern
-  money_base::_S_construct_pattern(char, char, char)
+  money_base::_S_construct_pattern(char, char, char) throw()
   { return _S_default_pattern; }
 
-  template<> 
+  template<>
     void
     moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*)
     {
@@ -64,7 +65,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
     }
 
-  template<> 
+  template<>
     void
     moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*)
     {
@@ -90,18 +91,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
     }
 
-  template<> 
+  template<>
     moneypunct<char, true>::~moneypunct()
     { delete _M_data; }
 
-  template<> 
+  template<>
     moneypunct<char, false>::~moneypunct()
     { delete _M_data; }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
-  template<> 
+  template<>
     void
-    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale, 
+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
                                                        const char*)
     {
       // "C" locale
@@ -115,9 +116,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       _M_data->_M_curr_symbol = L"";
       _M_data->_M_curr_symbol_size = 0;
       _M_data->_M_positive_sign = L"";
-      _M_data->_M_positive_sign_size = 0;      
+      _M_data->_M_positive_sign_size = 0;
       _M_data->_M_negative_sign = L"";
-      _M_data->_M_negative_sign_size = 0;      
+      _M_data->_M_negative_sign_size = 0;
       _M_data->_M_frac_digits = 0;
       _M_data->_M_pos_format = money_base::_S_default_pattern;
       _M_data->_M_neg_format = money_base::_S_default_pattern;
@@ -127,9 +128,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
          static_cast<wchar_t>(money_base::_S_atoms[__i]);
     }
 
-  template<> 
+  template<>
     void
-    moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale, 
+    moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
                                                         const char*)
     {
       // "C" locale
@@ -155,11 +156,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
          static_cast<wchar_t>(money_base::_S_atoms[__i]);
     }
 
-  template<> 
+  template<>
     moneypunct<wchar_t, true>::~moneypunct()
     { delete _M_data; }
 
-  template<> 
+  template<>
     moneypunct<wchar_t, false>::~moneypunct()
     { delete _M_data; }
 #endif
index 86c9249..225bc3c 100644 (file)
@@ -1,6 +1,6 @@
 // std::time_get, std::time_put implementation, generic version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -39,8 +39,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     void
     __timepunct<char>::
-    _M_put(char* __s, size_t __maxlen, const char* __format, 
-          const tm* __tm) const
+    _M_put(char* __s, size_t __maxlen, const char* __format,
+          const tm* __tm) const throw()
     {
       char* __old = setlocale(LC_ALL, NULL);
       const size_t __llen = strlen(__old) + 1;
@@ -55,10 +55,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        __s[0] = '\0';
     }
 
-  template<> 
+  template<>
     void
     __timepunct<char>::_M_initialize_timepunct(__c_locale)
-    { 
+    {
       // "C" locale.
       if (!_M_data)
        _M_data = new __timepunct_cache<char>;
@@ -72,7 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       _M_data->_M_am = "AM";
       _M_data->_M_pm = "PM";
       _M_data->_M_am_pm_format = "";
-         
+
       // Day names, starting with "C"'s Sunday.
       _M_data->_M_day1 = "Sunday";
       _M_data->_M_day2 = "Monday";
@@ -124,8 +124,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     void
     __timepunct<wchar_t>::
-    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-          const tm* __tm) const
+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
+          const tm* __tm) const throw()
     {
       char* __old = setlocale(LC_ALL, NULL);
       const size_t __llen = strlen(__old) + 1;
@@ -137,10 +137,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       delete [] __sav;
       // Make sure __s is null terminated.
       if (__len == 0)
-       __s[0] = L'\0';      
+       __s[0] = L'\0';
     }
 
-  template<> 
+  template<>
     void
     __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale)
     {
index 80ef9c7..9706e41 100644 (file)
@@ -1,6 +1,6 @@
 // Wrapper for underlying C-language localization -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -40,7 +40,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     void
     __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-                  const __c_locale& __cloc)
+                  const __c_locale& __cloc) throw()
     {
       char* __sanity;
       __v = __strtof_l(__s, &__sanity, __cloc);
@@ -67,7 +67,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     void
     __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-                  const __c_locale& __cloc)
+                  const __c_locale& __cloc) throw()
     {
       char* __sanity;
       __v = __strtod_l(__s, &__sanity, __cloc);
@@ -94,7 +94,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     void
     __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-                  const __c_locale& __cloc)
+                  const __c_locale& __cloc) throw()
     {
       char* __sanity;
 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
@@ -145,7 +145,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 
   __c_locale
-  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
+  locale::facet::_S_clone_c_locale(__c_locale& __cloc) throw()
   { return __duplocale(__cloc); }
 
   __c_locale
index e8df3c2..bcd4153 100644 (file)
@@ -1,6 +1,6 @@
 // std::collate implementation details, GNU version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2005, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2005, 2009, 2010 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
@@ -37,7 +37,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // be put there instead of here.
   template<>
     int 
-    collate<char>::_M_compare(const char* __one, const char* __two) const
+    collate<char>::_M_compare(const char* __one, 
+                             const char* __two) const throw()
     { 
       int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
       return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
@@ -46,14 +47,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     size_t
     collate<char>::_M_transform(char* __to, const char* __from, 
-                               size_t __n) const 
+                               size_t __n) const throw()
     { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<>
     int 
     collate<wchar_t>::_M_compare(const wchar_t* __one, 
-                                const wchar_t* __two) const
+                                const wchar_t* __two) const throw()
     {
       int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
       return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
@@ -62,7 +63,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     size_t
     collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-                                  size_t __n) const
+                                  size_t __n) const throw()
     { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
 #endif
 
index 546f878..6965694 100644 (file)
@@ -1,6 +1,6 @@
 // std::ctype implementation details, GNU version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -55,7 +55,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
 #ifdef _GLIBCXX_USE_WCHAR_T  
   ctype<wchar_t>::__wmask_type
-  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const throw()
   {
     __wmask_type __ret;
     switch (__m)
@@ -267,7 +267,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 
   void
-  ctype<wchar_t>::_M_initialize_ctype()
+  ctype<wchar_t>::_M_initialize_ctype() throw()
   {
 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
     __c_locale __old = __uselocale(_M_c_locale_ctype);
index 02e4824..159eb97 100644 (file)
@@ -1,6 +1,6 @@
 // std::moneypunct implementation details, GNU version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -37,7 +37,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // Construct and return valid pattern consisting of some combination of:
   // space none symbol sign value
   money_base::pattern
-  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
+  money_base::_S_construct_pattern(char __precedes, char __space, 
+                                  char __posn) throw()
   { 
     pattern __ret;
 
index f80932c..43cab22 100644 (file)
@@ -1,6 +1,6 @@
 // std::time_get, std::time_put implementation, GNU version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -39,7 +39,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     void
     __timepunct<char>::
     _M_put(char* __s, size_t __maxlen, const char* __format, 
-          const tm* __tm) const
+          const tm* __tm) const throw()
     {
 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
       const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
@@ -195,7 +195,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     void
     __timepunct<wchar_t>::
     _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-          const tm* __tm) const
+          const tm* __tm) const throw()
     {
 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
       const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
index 5ce4ba9..262681b 100644 (file)
@@ -1,6 +1,6 @@
 // Wrapper for underlying C-language localization -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2009, 2010 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
@@ -41,7 +41,7 @@ namespace std
   { }
 
   __c_locale
-  locale::facet::_S_clone_c_locale(__c_locale&)
+  locale::facet::_S_clone_c_locale(__c_locale&) throw()
   { return __c_locale(); }
 
   template<> 
index 601e520..0ac3d69 100644 (file)
@@ -521,7 +521,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     locale             _M_ios_locale;
 
     void
-    _M_init() throw ();
+    _M_init() throw();
 
   public:
 
@@ -680,7 +680,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
      *  with imbue_event.
     */
     locale
-    imbue(const locale& __loc) throw ();
+    imbue(const locale& __loc) throw();
 
     /**
      *  @brief  Locale access
index 9f7346e..347e761 100644 (file)
@@ -222,7 +222,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
      *          copies, or have the same name.  False otherwise.
     */
     bool
-    operator==(const locale& __other) const throw ();
+    operator==(const locale& __other) const throw();
 
     /**
      *  @brief  Locale inequality.
@@ -231,7 +231,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
      *  @return  ! (*this == other)
     */
     bool
-    operator!=(const locale& __other) const throw ()
+    operator!=(const locale& __other) const throw()
     { return !(this->operator==(__other)); }
 
     /**
@@ -313,7 +313,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     _S_initialize();
 
     static void
-    _S_initialize_once() throw ();
+    _S_initialize_once() throw();
 
     static category
     _S_normalize_category(category);
@@ -378,7 +378,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
                       __c_locale __old = 0);
 
     static __c_locale
-    _S_clone_c_locale(__c_locale& __cloc) throw ();
+    _S_clone_c_locale(__c_locale& __cloc) throw();
 
     static void
     _S_destroy_c_locale(__c_locale& __cloc);
@@ -392,7 +392,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     _S_get_c_locale();
 
     _GLIBCXX_CONST static const char*
-    _S_get_c_name() throw ();
+    _S_get_c_name() throw();
 
   private:
     void
@@ -441,7 +441,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
     template<typename _Facet>
       friend bool
-      has_facet(const locale&) throw ();
+      has_facet(const locale&) throw();
 
     // NB: There is no accessor for _M_index because it may be used
     // before the constructor is run; the effect of calling a member
@@ -463,7 +463,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     id() { }
 
     size_t
-    _M_id() const throw ();
+    _M_id() const throw();
   };
 
 
@@ -703,10 +703,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       // Used to abstract out _CharT bits in virtual member functions, below.
       int
-      _M_compare(const _CharT*, const _CharT*) const throw ();
+      _M_compare(const _CharT*, const _CharT*) const throw();
 
       size_t
-      _M_transform(_CharT*, const _CharT*, size_t) const throw ();
+      _M_transform(_CharT*, const _CharT*, size_t) const throw();
 
   protected:
       /// Destructor.
@@ -765,20 +765,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // Specializations.
   template<>
     int
-    collate<char>::_M_compare(const char*, const char*) const throw ();
+    collate<char>::_M_compare(const char*, const char*) const throw();
 
   template<>
     size_t
-    collate<char>::_M_transform(char*, const char*, size_t) const throw ();
+    collate<char>::_M_transform(char*, const char*, size_t) const throw();
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<>
     int
-    collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw ();
+    collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw();
 
   template<>
     size_t
-    collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw ();
+    collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw();
 #endif
 
   /// class collate_byname [22.2.4.2].
index c931502..b3f9001 100644 (file)
@@ -70,17 +70,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   template<>
     void
     __convert_to_v(const char*, float&, ios_base::iostate&,
-                  const __c_locale&) throw ();
+                  const __c_locale&) throw();
 
   template<>
     void
     __convert_to_v(const char*, double&, ios_base::iostate&,
-                  const __c_locale&) throw ();
+                  const __c_locale&) throw();
 
   template<>
     void
     __convert_to_v(const char*, long double&, ios_base::iostate&,
-                  const __c_locale&) throw ();
+                  const __c_locale&) throw();
 
   // NB: __pad is a struct, rather than a function, so it can be
   // partially-specialized.
@@ -1219,7 +1219,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
     protected:
       __wmask_type
-      _M_convert_to_wmask(const mask __m) const throw ();
+      _M_convert_to_wmask(const mask __m) const throw();
 
       /// Destructor
       virtual
@@ -1457,7 +1457,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       // For use at construction time only.
       void
-      _M_initialize_ctype() throw ();
+      _M_initialize_ctype() throw();
     };
 #endif //_GLIBCXX_USE_WCHAR_T
 
@@ -1557,7 +1557,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     // num_put
     // Construct and return valid scanf format for floating point types.
     static void
-    _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw ();
+    _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();
   };
 
   template<typename _CharT>
index 0e8c697..c485cc4 100644 (file)
@@ -103,8 +103,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   inline error_category::error_category() = default;
 
   // DR 890.
-  _GLIBCXX_CONST const error_category& system_category() throw ();
-  _GLIBCXX_CONST const error_category& generic_category() throw ();
+  _GLIBCXX_CONST const error_category& system_category() throw();
+  _GLIBCXX_CONST const error_category& generic_category() throw();
 
   error_code make_error_code(errc);
 
index befb26c..2b194f2 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*- The GNU C++ exception personality routine.
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of GCC.
@@ -549,6 +549,7 @@ PERSONALITY_FUNCTION (int version,
       else if (!foreign_exception)
        thrown_ptr = __get_object_from_ue (ue_header);
 #else
+#ifdef __GXX_RTTI
       // During forced unwinding, match a magic exception type.
       if (actions & _UA_FORCE_UNWIND)
        {
@@ -561,6 +562,7 @@ PERSONALITY_FUNCTION (int version,
          throw_type = &typeid(abi::__foreign_exception);
        }
       else
+#endif
         {
           thrown_ptr = __get_object_from_ue (ue_header);
           throw_type = __get_exception_header_from_obj
@@ -771,7 +773,7 @@ __cxa_call_unexpected (void *exc_obj_in)
       // If the exception spec allows std::bad_exception, throw that.
       // We don't have a thrown object to compare against, but since
       // bad_exception doesn't have virtual bases, that's OK; just pass 0.
-#ifdef __EXCEPTIONS  
+#if defined(__EXCEPTIONS) && defined(__GXX_RTTI)
       const std::type_info &bad_exc = typeid (std::bad_exception);
       if (check_exception_spec (&info, &bad_exc, 0, xh_switch_value))
        throw std::bad_exception();
index e075b9e..f79d9e9 100644 (file)
@@ -1,4 +1,5 @@
-// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 
+// 2009, 2010
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -37,8 +38,11 @@ __do_catch (const type_info *thr_type,
 {
   if (*this == *thr_type)
     return true;      // same type
+
+#ifdef __GXX_RTTI
   if (typeid (*this) != typeid (*thr_type))
     return false;     // not both same kind of pointers
+#endif
   
   if (!(outer & 1))
     // We're not the same and our outer pointers are not all const qualified
index ae15af0..be96308 100644 (file)
@@ -1,4 +1,5 @@
-// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007,
+// 2009, 2010
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -41,11 +42,13 @@ __pointer_catch (const __pbase_type_info *thrown_type,
                  void **thr_obj,
                  unsigned outer) const
 {
+#ifdef __GXX_RTTI
   if (outer < 2 && *__pointee == typeid (void))
     {
       // conversion to void
       return !thrown_type->__pointee->__is_function_p ();
     }
+#endif
   
   return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
 }
index 9d2ff8e..6605287 100644 (file)
@@ -1,7 +1,7 @@
 // Iostreams base classes -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009
+// 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -73,7 +73,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   bool ios_base::Init::_S_synced_with_stdio = true;
 
-  ios_base::ios_base() 
+  ios_base::ios_base() throw()
   : _M_precision(), _M_width(), _M_flags(), _M_exception(), 
   _M_streambuf_state(), _M_callbacks(0), _M_word_zero(), 
   _M_word_size(_S_local_word_size), _M_word(_M_local_word), _M_ios_locale()
@@ -175,7 +175,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 
   void 
-  ios_base::_M_dispose_callbacks(void)
+  ios_base::_M_dispose_callbacks(void) throw()
   {
     _Callback_list* __p = _M_callbacks;
     while (__p && __p->_M_remove_reference() == 0)
index bbdc80e..8b1873e 100644 (file)
@@ -1,6 +1,7 @@
 // Iostreams base classes -*- C++ -*-
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2009
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005,
+// 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   // Called only by basic_ios<>::init.
-  void 
-  ios_base::_M_init()   
+  void
+  ios_base::_M_init() throw()
   {
     // NB: May be called more than once
     _M_precision = 6;
     _M_width = 0;
     _M_flags = skipws | dec;
     _M_ios_locale = locale();
-  }  
-  
+  }
+
   // 27.4.2.3  ios_base locale functions
   locale
-  ios_base::imbue(const locale& __loc)
+  ios_base::imbue(const locale& __loc) throw()
   {
     locale __old = _M_ios_locale;
     _M_ios_locale = __loc;
index f35feec..a7a705c 100644 (file)
@@ -53,7 +53,7 @@
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 
   void
-  _List_node_base::swap(_List_node_base& __x, _List_node_base& __y)
+  _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) throw()
   {
     if ( __x._M_next != &__x )
     {
@@ -86,7 +86,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 
   void
   _List_node_base::_M_transfer(_List_node_base * const __first,
-                              _List_node_base * const __last)
+                              _List_node_base * const __last) throw()
   {
     if (this != __last)
     {
@@ -104,7 +104,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::_M_reverse()
+  _List_node_base::_M_reverse() throw()
   {
     _List_node_base* __tmp = this;
     do
@@ -118,7 +118,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::_M_hook(_List_node_base* const __position)
+  _List_node_base::_M_hook(_List_node_base* const __position) throw()
   {
     this->_M_next = __position;
     this->_M_prev = __position->_M_prev;
@@ -127,7 +127,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::_M_unhook()
+  _List_node_base::_M_unhook() throw()
   {
     _List_node_base* const __next_node = this->_M_next;
     _List_node_base* const __prev_node = this->_M_prev;
index bf31e7c..937e99c 100644 (file)
@@ -1,5 +1,5 @@
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009
+// 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -217,7 +217,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 
   const char*
-  locale::facet::_S_get_c_name()
+  locale::facet::_S_get_c_name() throw()
   { return _S_c_name; }
 
   locale::facet::
@@ -408,7 +408,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   _Atomic_word locale::id::_S_refcount;  // init'd to 0 by linker
 
   size_t
-  locale::id::_M_id() const
+  locale::id::_M_id() const throw()
   {
     if (!_M_index)
       {
index 0815654..77686c6 100644 (file)
@@ -1,5 +1,5 @@
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009
+// 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -58,7 +58,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   // According to the resolution of DR 231, about 22.2.2.2.2, p11,
   // "str.precision() is specified in the conversion specification".
   void
-  __num_base::_S_format_float(const ios_base& __io, char* __fptr, char __mod)
+  __num_base::_S_format_float(const ios_base& __io, char* __fptr, 
+                             char __mod) throw()
   {
     ios_base::fmtflags __flags = __io.flags();
     *__fptr++ = '%';
@@ -88,7 +89,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   bool
   __verify_grouping(const char* __grouping, size_t __grouping_size,
-                   const string& __grouping_tmp)
+                   const string& __grouping_tmp) throw()
   {
     const size_t __n = __grouping_tmp.size() - 1;
     const size_t __min = std::min(__n, size_t(__grouping_size - 1));
index 893b606..45f67f6 100644 (file)
@@ -1,5 +1,5 @@
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 
-// 2009
+// 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -260,7 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   }
 
   void
-  locale::_S_initialize_once()
+  locale::_S_initialize_once() throw()
   {
     // 2 references.
     // One reference for _S_classic, one for _S_global
index c8c19ed..2144801 100644 (file)
@@ -1,6 +1,6 @@
 // <system_error> implementation file
 
-// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 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
@@ -69,10 +69,10 @@ namespace
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   const error_category& 
-  system_category() { return system_category_instance; }
+  system_category() throw() { return system_category_instance; }
 
   const error_category& 
-  generic_category() { return generic_category_instance; }
+  generic_category() throw() { return generic_category_instance; }
   
   system_error::~system_error() throw() { }
 
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
new file mode 100644 (file)
index 0000000..9958599
--- /dev/null
@@ -0,0 +1,21 @@
+// { dg-do compile }
+// { dg-options "-fno-rtti" }
+
+// Copyright (C) 2010 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 copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/extc++.h>
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++200x/all_no_rtti.cc b/libstdc++-v3/testsuite/17_intro/headers/c++200x/all_no_rtti.cc
new file mode 100644 (file)
index 0000000..2ce83ed
--- /dev/null
@@ -0,0 +1,21 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x -fno-rtti" }
+
+// Copyright (C) 2010 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 copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/extc++.h>