Message ID | 4EAEF914.3080702@redhat.com |
---|---|
State | New |
Headers | show |
On 10/31/2011 08:37 PM, Jason Merrill wrote: > I have on occasion been confused by <initializer_list> silently > becoming empty in C++98 mode. OK for trunk? For c++98, I think we should use the usual: #ifndef __GXX_EXPERIMENTAL_CXX0X__ # include <bits/c++0x_warning.h> #else which we have in place elsewhere. Or we have special reasons for not doing that? Paolo.
On 10/31/2011 04:07 PM, Paolo Carlini wrote: > On 10/31/2011 08:37 PM, Jason Merrill wrote: >> I have on occasion been confused by <initializer_list> silently >> becoming empty in C++98 mode. OK for trunk? > For c++98, I think we should use the usual: > > #ifndef __GXX_EXPERIMENTAL_CXX0X__ > # include <bits/c++0x_warning.h> > #else > > which we have in place elsewhere. Or we have special reasons for not > doing that? I'd rather not make a libsupc++ header dependent on a header from the main library. I guess we could move c++0x_warning.h into libsupc++, though... Jason
On 10/31/2011 09:17 PM, Jason Merrill wrote: > On 10/31/2011 04:07 PM, Paolo Carlini wrote: >> On 10/31/2011 08:37 PM, Jason Merrill wrote: >>> I have on occasion been confused by <initializer_list> silently >>> becoming empty in C++98 mode. OK for trunk? >> For c++98, I think we should use the usual: >> >> #ifndef __GXX_EXPERIMENTAL_CXX0X__ >> # include <bits/c++0x_warning.h> >> #else >> >> which we have in place elsewhere. Or we have special reasons for not >> doing that? > > I'd rather not make a libsupc++ header dependent on a header from the > main library. I guess we could move c++0x_warning.h into libsupc++, > though... Sure. Note anyway, that bits/c++config.h is already included, elsewhere too in libsupc++. Paolo
On 10/31/2011 04:24 PM, Paolo Carlini wrote: > Sure. Note anyway, that bits/c++config.h is already included, elsewhere > too in libsupc++. I guess the other option would be to add it to install-freestanding-headers. Jason
On 10/31/2011 09:32 PM, Jason Merrill wrote: > On 10/31/2011 04:24 PM, Paolo Carlini wrote: >> Sure. Note anyway, that bits/c++config.h is already included, elsewhere >> too in libsupc++. > I guess the other option would be to add it to > install-freestanding-headers. Of course. I think Benjamin followed in better detail the issues having to with libsupc++ vs the C++ runtime proper, freestanding, making sure there aren't overly annoying links, etc. For now you can of course commit the patch as-is, only please make sure that the error message is by and large consistent with the one we provide via c++0x_warning.h. Paolo.
commit 3d7ac3e4d8bb54921eb3e1f70b1a42a165ba4f5b Author: Jason Merrill <jason@redhat.com> Date: Mon Oct 31 01:21:49 2011 -0400 * libsupc++/initializer_list: Copy C++0x #error from bits/c++0x_warning.h. diff --git a/libstdc++-v3/include/bits/algorithmfwd.h b/libstdc++-v3/include/bits/algorithmfwd.h index cc0b98e..fbec55d 100644 --- a/libstdc++-v3/include/bits/algorithmfwd.h +++ b/libstdc++-v3/include/bits/algorithmfwd.h @@ -35,7 +35,9 @@ #include <bits/c++config.h> #include <bits/stl_pair.h> #include <bits/stl_iterator_base_types.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 5708194..0edb8b2 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -40,7 +40,9 @@ #include <ext/atomicity.h> #include <debug/debug.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/forward_list.h b/libstdc++-v3/include/bits/forward_list.h index c80ee50..0fc8323 100644 --- a/libstdc++-v3/include/bits/forward_list.h +++ b/libstdc++-v3/include/bits/forward_list.h @@ -33,7 +33,9 @@ #pragma GCC system_header #include <memory> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h index bddecb0..8f28640 100644 --- a/libstdc++-v3/include/bits/stl_bvector.h +++ b/libstdc++-v3/include/bits/stl_bvector.h @@ -57,7 +57,9 @@ #ifndef _STL_BVECTOR_H #define _STL_BVECTOR_H 1 +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h index 17ea01a..b924917 100644 --- a/libstdc++-v3/include/bits/stl_deque.h +++ b/libstdc++-v3/include/bits/stl_deque.h @@ -60,7 +60,9 @@ #include <bits/concept_check.h> #include <bits/stl_iterator_base_types.h> #include <bits/stl_iterator_base_funcs.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h index 56ee2fb..fc1d8f8 100644 --- a/libstdc++-v3/include/bits/stl_list.h +++ b/libstdc++-v3/include/bits/stl_list.h @@ -58,7 +58,9 @@ #define _STL_LIST_H 1 #include <bits/concept_check.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h index 889e52b..45824f0 100644 --- a/libstdc++-v3/include/bits/stl_map.h +++ b/libstdc++-v3/include/bits/stl_map.h @@ -59,7 +59,9 @@ #include <bits/functexcept.h> #include <bits/concept_check.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_multimap.h b/libstdc++-v3/include/bits/stl_multimap.h index 6b74558..fd5a5a8 100644 --- a/libstdc++-v3/include/bits/stl_multimap.h +++ b/libstdc++-v3/include/bits/stl_multimap.h @@ -58,7 +58,9 @@ #define _STL_MULTIMAP_H 1 #include <bits/concept_check.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_multiset.h b/libstdc++-v3/include/bits/stl_multiset.h index 8b25a97..ab467c8 100644 --- a/libstdc++-v3/include/bits/stl_multiset.h +++ b/libstdc++-v3/include/bits/stl_multiset.h @@ -58,7 +58,9 @@ #define _STL_MULTISET_H 1 #include <bits/concept_check.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h index b30966a..18fd117 100644 --- a/libstdc++-v3/include/bits/stl_set.h +++ b/libstdc++-v3/include/bits/stl_set.h @@ -58,7 +58,9 @@ #define _STL_SET_H 1 #include <bits/concept_check.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h index 869bcf7..9b7b698 100644 --- a/libstdc++-v3/include/bits/stl_vector.h +++ b/libstdc++-v3/include/bits/stl_vector.h @@ -60,7 +60,9 @@ #include <bits/stl_iterator_base_funcs.h> #include <bits/functexcept.h> #include <bits/concept_check.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h index 8e825e0..5720daf 100644 --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -32,7 +32,10 @@ #pragma GCC system_header +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif + #include <ext/vstring_util.h> #include <ext/rc_string_base.h> #include <ext/sso_string_base.h> diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray index 3b155c5..a159aab5 100644 --- a/libstdc++-v3/include/std/valarray +++ b/libstdc++-v3/include/std/valarray @@ -39,7 +39,9 @@ #include <cmath> #include <algorithm> #include <debug/debug.h> +#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <initializer_list> +#endif namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/libsupc++/initializer_list b/libstdc++-v3/libsupc++/initializer_list index 0dc8ae9..84ec12a 100644 --- a/libstdc++-v3/libsupc++/initializer_list +++ b/libstdc++-v3/libsupc++/initializer_list @@ -99,5 +99,9 @@ namespace std } #pragma GCC visibility pop +#else // C++0x +#error This file requires compiler and library support for the \ + ISO C++ 2011 standard. This support is currently experimental, and must be \ + enabled with the -std=c++11 or -std=gnu++11 compiler options. #endif // C++0x #endif // _INITIALIZER_LIST diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc index 60f5008..006041d 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1668 } +// { dg-error "no matching" "" { target *-*-* } 1670 } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc index 2d84537..c7ed29a 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1601 } +// { dg-error "no matching" "" { target *-*-* } 1603 } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc index 2329a32..e390f44 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1601 } +// { dg-error "no matching" "" { target *-*-* } 1603 } #include <deque> #include <utility> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc index 631d76c..ed81d58 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1752 } +// { dg-error "no matching" "" { target *-*-* } 1754 } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc index 7dd46e1..774c728 100644 --- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1211 } +// { dg-error "no matching" "" { target *-*-* } 1213 } // Copyright (C) 2009, 2010, 2011 Free Software Foundation // diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc index e8e4d57..e19698d 100644 --- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1211 } +// { dg-error "no matching" "" { target *-*-* } 1213 } // Copyright (C) 2009, 2010, 2011 Free Software Foundation // diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc index 0ea7d2b..1d7fdb8 100644 --- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1211 } +// { dg-error "no matching" "" { target *-*-* } 1213 } // Copyright (C) 2009, 2010, 2011 Free Software Foundation // diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc index 8d7844c..12dd38e 100644 --- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1211 } +// { dg-error "no matching" "" { target *-*-* } 1213 } // Copyright (C) 2009, 2010, 2011 Free Software Foundation // diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc index 974821f..6349ea2 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1549 } +// { dg-error "no matching" "" { target *-*-* } 1551 } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc index 6683e78..12f28ff 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1505 } +// { dg-error "no matching" "" { target *-*-* } 1507 } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc index f3e7009..0599334 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1505 } +// { dg-error "no matching" "" { target *-*-* } 1507 } #include <list> #include <utility> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc index 7e19c42..22acf3a 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1505 } +// { dg-error "no matching" "" { target *-*-* } 1507 } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc index 00d18b7..1855fdd 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1223 } +// { dg-error "no matching" "" { target *-*-* } 1225 } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc index 34c2ed1..9c05486 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1153 } +// { dg-error "no matching" "" { target *-*-* } 1155 } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc index 563def0..152393c 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1153 } +// { dg-error "no matching" "" { target *-*-* } 1155 } #include <vector> #include <utility> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc index fec41a3..f44ae63 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1264 } +// { dg-error "no matching" "" { target *-*-* } 1266 } #include <vector>