OSDN Git Service

2011-01-06 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Jan 2011 10:14:37 +0000 (10:14 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Jan 2011 10:14:37 +0000 (10:14 +0000)
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.

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

libstdc++-v3/ChangeLog
libstdc++-v3/config/abi/pre/gnu.ver
libstdc++-v3/include/std/functional
libstdc++-v3/src/Makefile.am
libstdc++-v3/src/Makefile.in
libstdc++-v3/src/placeholders.cc [new file with mode: 0644]

index 3e6e524..e343069 100644 (file)
@@ -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.
index f8c32e1..6633273 100644 (file)
@@ -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.
index 0c37ccc..a781dbe 100644 (file)
@@ -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;
   }
 
   /**
index 28a924e..21a1bfd 100644 (file)
@@ -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.
index c0d621d..6776eb7 100644 (file)
@@ -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 (file)
index 0000000..1d68bb7
--- /dev/null
@@ -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{};
+  }
+}