diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 10 | ||||
-rw-r--r-- | libstdc++-v3/config/abi/pre/gnu.ver | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/std/functional | 63 | ||||
-rw-r--r-- | libstdc++-v3/src/Makefile.am | 6 | ||||
-rw-r--r-- | libstdc++-v3/src/Makefile.in | 15 | ||||
-rw-r--r-- | libstdc++-v3/src/placeholders.cc | 65 |
6 files changed, 125 insertions, 37 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 3e6e524d..e343069 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2011-01-06 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/47185 + * src/placeholders.cc: New. + * src/Makefile.am: Adjust. + * src/Makefile.in: Regenerate. + * include/std/functional (placeholders::_1, _2, ..., _29): Declare + extern. + * config/abi/pre/gnu.ver: Export. + 2011-01-05 François Dumont <francois.cppdevs@free.fr> * include/debug/safe_base.h (_Safe_iterator_base::_M_unlink): New. diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index f8c32e1..6633273 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -1196,6 +1196,9 @@ GLIBCXX_3.4.15 { # std::future_category is now a function _ZSt15future_categoryv; + # std::placeholders + _ZNSt12placeholders*; + } GLIBCXX_3.4.14; # Symbols in the support library (libsupc++) have their own tag. diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index 0c37ccc..a781dbe 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -844,39 +844,36 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) * unique names for each. */ namespace placeholders - { - namespace - { - _Placeholder<1> _1; - _Placeholder<2> _2; - _Placeholder<3> _3; - _Placeholder<4> _4; - _Placeholder<5> _5; - _Placeholder<6> _6; - _Placeholder<7> _7; - _Placeholder<8> _8; - _Placeholder<9> _9; - _Placeholder<10> _10; - _Placeholder<11> _11; - _Placeholder<12> _12; - _Placeholder<13> _13; - _Placeholder<14> _14; - _Placeholder<15> _15; - _Placeholder<16> _16; - _Placeholder<17> _17; - _Placeholder<18> _18; - _Placeholder<19> _19; - _Placeholder<20> _20; - _Placeholder<21> _21; - _Placeholder<22> _22; - _Placeholder<23> _23; - _Placeholder<24> _24; - _Placeholder<25> _25; - _Placeholder<26> _26; - _Placeholder<27> _27; - _Placeholder<28> _28; - _Placeholder<29> _29; - } + { + extern const _Placeholder<1> _1; + extern const _Placeholder<2> _2; + extern const _Placeholder<3> _3; + extern const _Placeholder<4> _4; + extern const _Placeholder<5> _5; + extern const _Placeholder<6> _6; + extern const _Placeholder<7> _7; + extern const _Placeholder<8> _8; + extern const _Placeholder<9> _9; + extern const _Placeholder<10> _10; + extern const _Placeholder<11> _11; + extern const _Placeholder<12> _12; + extern const _Placeholder<13> _13; + extern const _Placeholder<14> _14; + extern const _Placeholder<15> _15; + extern const _Placeholder<16> _16; + extern const _Placeholder<17> _17; + extern const _Placeholder<18> _18; + extern const _Placeholder<19> _19; + extern const _Placeholder<20> _20; + extern const _Placeholder<21> _21; + extern const _Placeholder<22> _22; + extern const _Placeholder<23> _23; + extern const _Placeholder<24> _24; + extern const _Placeholder<25> _25; + extern const _Placeholder<26> _26; + extern const _Placeholder<27> _27; + extern const _Placeholder<28> _28; + extern const _Placeholder<29> _29; } /** diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 28a924e..21a1bfd 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -207,6 +207,7 @@ sources = \ locale-inst.cc \ misc-inst.cc \ ostream-inst.cc \ + placeholders.cc \ sstream-inst.cc \ streambuf-inst.cc \ streambuf.cc \ @@ -354,6 +355,11 @@ debug.lo: debug.cc debug.o: debug.cc $(CXXCOMPILE) -std=gnu++0x -c $< +placeholders.lo: placeholders.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +placeholders.o: placeholders.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + if GLIBCXX_LDBL_COMPAT # Use special rules for compatibility-ldbl.cc compilation, as we need to # pass -mlong-double-64. diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index c0d621d..6776eb7 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -109,10 +109,11 @@ am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \ strstream.lo system_error.lo tree.lo allocator-inst.lo \ concept-inst.lo fstream-inst.lo ext-inst.lo ios-inst.lo \ iostream-inst.lo istream-inst.lo istream.lo locale-inst.lo \ - misc-inst.lo ostream-inst.lo sstream-inst.lo streambuf-inst.lo \ - streambuf.lo string-inst.lo valarray-inst.lo wlocale-inst.lo \ - wstring-inst.lo mutex.lo condition_variable.lo chrono.lo \ - thread.lo future.lo $(am__objects_1) $(am__objects_4) + misc-inst.lo ostream-inst.lo placeholders.lo sstream-inst.lo \ + streambuf-inst.lo streambuf.lo string-inst.lo valarray-inst.lo \ + wlocale-inst.lo wstring-inst.lo mutex.lo condition_variable.lo \ + chrono.lo thread.lo future.lo $(am__objects_1) \ + $(am__objects_4) am_libstdc___la_OBJECTS = $(am__objects_5) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) @@ -422,6 +423,7 @@ sources = \ locale-inst.cc \ misc-inst.cc \ ostream-inst.cc \ + placeholders.cc \ sstream-inst.cc \ streambuf-inst.cc \ streambuf.cc \ @@ -941,6 +943,11 @@ debug.lo: debug.cc debug.o: debug.cc $(CXXCOMPILE) -std=gnu++0x -c $< +placeholders.lo: placeholders.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +placeholders.o: placeholders.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + # Use special rules for compatibility-ldbl.cc compilation, as we need to # pass -mlong-double-64. @GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc diff --git a/libstdc++-v3/src/placeholders.cc b/libstdc++-v3/src/placeholders.cc new file mode 100644 index 0000000..1d68bb7 --- /dev/null +++ b/libstdc++-v3/src/placeholders.cc @@ -0,0 +1,65 @@ +// std::placeholders -*- C++ -*- + +// Copyright (C) 2011 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +#ifndef __GXX_EXPERIMENTAL_CXX0X__ +# error "placeholders.cc must be compiled with -std=gnu++0x" +#endif + +#include <functional> + +namespace std +{ + namespace placeholders + { + extern const _Placeholder<1> _1{}; + extern const _Placeholder<2> _2{}; + extern const _Placeholder<3> _3{}; + extern const _Placeholder<4> _4{}; + extern const _Placeholder<5> _5{}; + extern const _Placeholder<6> _6{}; + extern const _Placeholder<7> _7{}; + extern const _Placeholder<8> _8{}; + extern const _Placeholder<9> _9{}; + extern const _Placeholder<10> _10{}; + extern const _Placeholder<11> _11{}; + extern const _Placeholder<12> _12{}; + extern const _Placeholder<13> _13{}; + extern const _Placeholder<14> _14{}; + extern const _Placeholder<15> _15{}; + extern const _Placeholder<16> _16{}; + extern const _Placeholder<17> _17{}; + extern const _Placeholder<18> _18{}; + extern const _Placeholder<19> _19{}; + extern const _Placeholder<20> _20{}; + extern const _Placeholder<21> _21{}; + extern const _Placeholder<22> _22{}; + extern const _Placeholder<23> _23{}; + extern const _Placeholder<24> _24{}; + extern const _Placeholder<25> _25{}; + extern const _Placeholder<26> _26{}; + extern const _Placeholder<27> _27{}; + extern const _Placeholder<28> _28{}; + extern const _Placeholder<29> _29{}; + } +} |