Patchwork [v3] use NSDMI in C++11 mutex types

login
register
mail settings
Submitter Jonathan Wakely
Date Oct. 25, 2011, 9:44 p.m.
Message ID <CAH6eHdQWMg5QuV_kVcNS=c1FE0es7TEX5c-cdV6BzXgaM5g47g@mail.gmail.com>
Download mbox | patch
Permalink /patch/121799/
State New
Headers show

Comments

Jonathan Wakely - Oct. 25, 2011, 9:44 p.m.
This is a follow up to my last two changes to the condition_variable
code.  For some reason G++ didn't reject the explicitly-defaulted
functions in src/condition_variable.cc even though they had different
exception specifications to the declaration.  I will try to file that
in bugzilla but can't yet reproduce it in a smaller testcase.  This
patch also removes the condition_variable_any::native_handle_type
typedef which is unused since I removed native_handle() in r180446, so
the testcase has to go too.

        * include/std/condition_variable (condition_variable_any): Remove
        unused native_handle_type typedef.
        * src/condition_variable.cc (condition_variable): Add missing noexcept
        specifications.
        * 30_threads/condition_variable_any/requirements/typedefs.cc: Remove.

Tested x86_64-linux, committed to trunk.

Patch

Index: include/std/condition_variable
===================================================================
--- include/std/condition_variable	(revision 180446)
+++ include/std/condition_variable	(working copy)
@@ -177,7 +177,6 @@ 
     mutex				_M_mutex;
 
   public:
-    typedef condition_variable::native_handle_type	native_handle_type;
 
     condition_variable_any() noexcept;
     ~condition_variable_any() noexcept;
Index: src/condition_variable.cc
===================================================================
--- src/condition_variable.cc	(revision 180411)
+++ src/condition_variable.cc	(working copy)
@@ -31,8 +31,8 @@ 
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #ifdef __GTHREAD_COND_INIT
-  condition_variable::condition_variable() = default;
-  condition_variable::~condition_variable() = default;
+  condition_variable::condition_variable() noexcept = default;
+  condition_variable::~condition_variable() noexcept = default;
 #else
   condition_variable::condition_variable() noexcept
   {
Index: testsuite/30_threads/condition_variable_any/requirements/typedefs.cc
===================================================================
--- testsuite/30_threads/condition_variable_any/requirements/typedefs.cc	(revision 180409)
+++ testsuite/30_threads/condition_variable_any/requirements/typedefs.cc	(working copy)
@@ -1,30 +0,0 @@ 
-// { dg-do compile }
-// { dg-options "-std=gnu++0x" }
-// { dg-require-cstdint "" }
-// { dg-require-gthreads "" }
-
-// 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 <condition_variable>
-
-void test01()
-{
-  // Check for required typedefs
-  typedef std::condition_variable_any test_type;
-  typedef test_type::native_handle_type type;
-}