Patchwork tweak std::bind constraint

login
register
mail settings
Submitter Jonathan Wakely
Date Nov. 26, 2012, 11:53 p.m.
Message ID <CAH6eHdSmpxoxPEoU5n8Fk-Nx5UT7uGfcxdfqBaaCY4Niet3T0g@mail.gmail.com>
Download mbox | patch
Permalink /patch/202046/
State New
Headers show

Comments

Jonathan Wakely - Nov. 26, 2012, 11:53 p.m.
* include/std/functional (__is_socketlike): Change from class
        template to alias template.

Tested x86_64-linux, committed to trunk.
commit 634c004b52c86148e1719e20744504816374dfdb
Author: Jonathan Wakely <jwakely.gcc@gmail.com>
Date:   Sun Nov 25 22:01:28 2012 +0000

    	* include/std/functional (__is_socketlike): Change from class
    	template to alias template.

Patch

diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 1a98127..0d8fbd6 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -1503,14 +1503,8 @@  _GLIBCXX_HAS_NESTED_TYPE(result_type)
   // Trait type used to remove std::bind() from overload set via SFINAE
   // when first argument has integer type, so that std::bind() will
   // not be a better match than ::bind() from the BSD Sockets API.
-  template<typename _Tp>
-    class __is_socketlike
-    {
-      typedef typename decay<_Tp>::type _Tp2;
-    public:
-      static const bool value =
-	is_integral<_Tp2>::value || is_enum<_Tp2>::value;
-    };
+  template<typename _Tp, typename _Tp2 = typename decay<_Tp>::type>
+    using __is_socketlike = __or_<is_integral<_Tp2>, is_enum<_Tp2>>;
 
   template<bool _SocketLike, typename _Func, typename... _BoundArgs>
     struct _Bind_helper