diff --git a/Cython/Includes/libcpp/deque.pxd b/Cython/Includes/libcpp/deque.pxd
index b2016c8723ba08c81c12542431d77e8c66afc6db..0ade803ac740bc3b329a21ef9c41f2744005f025 100644
--- a/Cython/Includes/libcpp/deque.pxd
+++ b/Cython/Includes/libcpp/deque.pxd
@@ -18,10 +18,10 @@ cdef extern from "<deque>" namespace "std":
         #    pass
         #cppclass const_reverse_iterator(reverse_iterator):
         #    pass
-        deque()
-        deque(deque&)
-        deque(size_t)
-        deque(size_t, T&)
+        deque() nogil except +
+        deque(deque&) nogil except +
+        deque(size_t) nogil except +
+        deque(size_t, T&) nogil except +
         #deque[input_iterator](input_iterator, input_iterator)
         T& operator[](size_t) nogil
         #deque& operator=(deque&)
diff --git a/Cython/Includes/libcpp/list.pxd b/Cython/Includes/libcpp/list.pxd
index 55dfddbc678293fb41cbdab41aaae56f48a5293d..3be0dc252693de954797b13266ef1835adaad93f 100644
--- a/Cython/Includes/libcpp/list.pxd
+++ b/Cython/Includes/libcpp/list.pxd
@@ -16,9 +16,9 @@ cdef extern from "<list>" namespace "std":
         #    pass
         #cppclass const_reverse_iterator(reverse_iterator):
         #    pass
-        list()
-        list(list&)
-        list(size_t, T&)
+        list() nogil except +
+        list(list&) nogil except +
+        list(size_t, T&) nogil except +
         #list operator=(list&)
         bint operator==(list&, list&) nogil
         bint operator!=(list&, list&) nogil
diff --git a/Cython/Includes/libcpp/map.pxd b/Cython/Includes/libcpp/map.pxd
index 49a1c05b3aa12aa2b64a64f21c56fb6f48e0cba0..8fbb2973f3b879d999e10df3d913b912f4f3833d 100644
--- a/Cython/Includes/libcpp/map.pxd
+++ b/Cython/Includes/libcpp/map.pxd
@@ -18,8 +18,8 @@ cdef extern from "<map>" namespace "std":
         #    pass
         #cppclass const_reverse_iterator(reverse_iterator):
         #    pass
-        map()
-        map(map&)
+        map() nogil except +
+        map(map&) nogil except +
         #map(key_compare&)
         U& operator[](T&) nogil
         #map& operator=(map&)
diff --git a/Cython/Includes/libcpp/queue.pxd b/Cython/Includes/libcpp/queue.pxd
index 762987269080af41a72a48c15848b7d153617f24..d9af8c3d8905dbfacc923f3004329f4027dbe1d9 100644
--- a/Cython/Includes/libcpp/queue.pxd
+++ b/Cython/Includes/libcpp/queue.pxd
@@ -1,7 +1,7 @@
 cdef extern from "<queue>" namespace "std":
     cdef cppclass queue[T]:
-        queue()
-        queue(queue&)
+        queue() nogil except +
+        queue(queue&) nogil except +
         #queue(Container&)
         T& back() nogil
         bint empty() nogil
@@ -10,8 +10,8 @@ cdef extern from "<queue>" namespace "std":
         void push(T&) nogil
         size_t size() nogil
     cdef cppclass priority_queue[T]:
-        priority_queue()
-        priority_queue(priority_queue&)
+        priority_queue() nogil except +
+        priority_queue(priority_queue&) nogil except +
         #priority_queue(Container&)
         bint empty() nogil
         void pop() nogil
diff --git a/Cython/Includes/libcpp/set.pxd b/Cython/Includes/libcpp/set.pxd
index 2215441cab459d7246f0adb81a97e1131b165924..58b1383913ae77887c202341cc6a579ac83442f9 100644
--- a/Cython/Includes/libcpp/set.pxd
+++ b/Cython/Includes/libcpp/set.pxd
@@ -18,8 +18,8 @@ cdef extern from "<set>" namespace "std":
         #    pass
         #cppclass const_reverse_iterator(reverse_iterator):
         #    pass
-        set() nogil
-        set(set&) nogil
+        set() nogil except +
+        set(set&) nogil except +
         #set(key_compare&)
         #set& operator=(set&)
         bint operator==(set&, set&) nogil
diff --git a/Cython/Includes/libcpp/stack.pxd b/Cython/Includes/libcpp/stack.pxd
index 7802fcb297865ef501365ce35c5ab82083bfb00f..d8c4314fb0f9f4164ebb3dff14c2330a12987dac 100644
--- a/Cython/Includes/libcpp/stack.pxd
+++ b/Cython/Includes/libcpp/stack.pxd
@@ -1,7 +1,7 @@
 cdef extern from "<stack>" namespace "std":
     cdef cppclass stack[T]:
-        stack()
-        stack(stack&)
+        stack() nogil except +
+        stack(stack&) nogil except +
         #stack(Container&)
         bint empty() nogil
         void pop() nogil
diff --git a/Cython/Includes/libcpp/string.pxd b/Cython/Includes/libcpp/string.pxd
index 6133222edfeb8af434c8e49115aa4603da3427a1..0505d1be3ec669dab1ab432e392b0637c91e9414 100644
--- a/Cython/Includes/libcpp/string.pxd
+++ b/Cython/Includes/libcpp/string.pxd
@@ -5,12 +5,12 @@ cdef extern from "<string>" namespace "std":
     size_t npos = -1
 
     cdef cppclass string:
-        string()
-        string(char *)
-        string(char *, size_t)
-        string(string&)
+        string() nogil except +
+        string(char *) nogil except +
+        string(char *, size_t) nogil except +
+        string(string&) nogil except +
         # as a string formed by a repetition of character c, n times.
-        string(size_t, char)
+        string(size_t, char) nogil except +
 
         const_char* c_str() nogil
         const_char* data() nogil
diff --git a/Cython/Includes/libcpp/utility.pxd b/Cython/Includes/libcpp/utility.pxd
index 4c79c0bf6bc440dff1d67818d4f7d4ead1e5c958..d3823930e696e40829803b6a3e418deae05be23b 100644
--- a/Cython/Includes/libcpp/utility.pxd
+++ b/Cython/Includes/libcpp/utility.pxd
@@ -2,9 +2,9 @@ cdef extern from "<utility>" namespace "std":
     cdef cppclass pair[T, U]:
         T first
         U second
-        pair()
-        pair(pair&)
-        pair(T&, U&)
+        pair() nogil except +
+        pair(pair&) nogil except +
+        pair(T&, U&) nogil except +
         bint operator==(pair&, pair&) nogil
         bint operator!=(pair&, pair&) nogil
         bint operator<(pair&, pair&) nogil
diff --git a/Cython/Includes/libcpp/vector.pxd b/Cython/Includes/libcpp/vector.pxd
index e9598bdae303ed18a741ca8fc8a59542eea4c968..8f8f00661483e7afaa23b937dcc88ba5aa3a997d 100644
--- a/Cython/Includes/libcpp/vector.pxd
+++ b/Cython/Includes/libcpp/vector.pxd
@@ -24,10 +24,10 @@ cdef extern from "<vector>" namespace "std":
         #    pass
         #cppclass const_reverse_iterator(reverse_iterator):
         #    pass
-        vector()
-        vector(vector&) nogil
-        vector(size_t) nogil
-        vector(size_t, T&) nogil
+        vector() nogil except +
+        vector(vector&) nogil except +
+        vector(size_t) nogil except +
+        vector(size_t, T&) nogil except +
         #vector[input_iterator](input_iterator, input_iterator)
         T& operator[](size_t) nogil
         #vector& operator=(vector&)