[libcxx] r241092 - Forgot the support include file in r241091

Marshall Clow mclow.lists at gmail.com
Tue Jun 30 11:16:12 PDT 2015


Author: marshall
Date: Tue Jun 30 13:16:12 2015
New Revision: 241092

URL: http://llvm.org/viewvc/llvm-project?rev=241092&view=rev
Log:
Forgot the support include file in r241091

Added:
    libcxx/trunk/test/support/is_transparent.h

Added: libcxx/trunk/test/support/is_transparent.h
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/is_transparent.h?rev=241092&view=auto
==============================================================================
--- libcxx/trunk/test/support/is_transparent.h (added)
+++ libcxx/trunk/test/support/is_transparent.h Tue Jun 30 13:16:12 2015
@@ -0,0 +1,73 @@
+//===----------------------------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef TRANSPARENT_H
+#define TRANSPARENT_H
+
+// testing transparent 
+#if _LIBCPP_STD_VER > 11
+
+struct transparent_less
+{
+    template <class T, class U>
+    constexpr auto operator()(T&& t, U&& u) const
+    noexcept(noexcept(std::forward<T>(t) < std::forward<U>(u)))
+    -> decltype      (std::forward<T>(t) < std::forward<U>(u))
+        { return      std::forward<T>(t) < std::forward<U>(u); }
+    typedef void is_transparent;  // correct
+};
+
+struct transparent_less_no_type
+{
+    template <class T, class U>
+    constexpr auto operator()(T&& t, U&& u) const
+    noexcept(noexcept(std::forward<T>(t) < std::forward<U>(u)))
+    -> decltype      (std::forward<T>(t) < std::forward<U>(u))
+        { return      std::forward<T>(t) < std::forward<U>(u); }
+private:
+//    typedef void is_transparent;  // error - should exist
+};
+
+struct transparent_less_private
+{
+    template <class T, class U>
+    constexpr auto operator()(T&& t, U&& u) const
+    noexcept(noexcept(std::forward<T>(t) < std::forward<U>(u)))
+    -> decltype      (std::forward<T>(t) < std::forward<U>(u))
+        { return      std::forward<T>(t) < std::forward<U>(u); }
+private:
+    typedef void is_transparent;  // error - should be accessible
+};
+
+struct transparent_less_not_a_type
+{
+    template <class T, class U>
+    constexpr auto operator()(T&& t, U&& u) const
+    noexcept(noexcept(std::forward<T>(t) < std::forward<U>(u)))
+    -> decltype      (std::forward<T>(t) < std::forward<U>(u))
+        { return      std::forward<T>(t) < std::forward<U>(u); }
+
+    int is_transparent;  // error - should be a type
+};
+
+struct C2Int { // comparable to int
+    C2Int() : i_(0) {}
+    C2Int(int i): i_(i) {}
+    int get () const { return i_; }
+private:
+    int i_;
+    };
+    
+bool operator <(int          rhs,   const C2Int& lhs) { return rhs       < lhs.get(); }
+bool operator <(const C2Int& rhs,   const C2Int& lhs) { return rhs.get() < lhs.get(); }
+bool operator <(const C2Int& rhs,            int lhs) { return rhs.get() < lhs; }
+
+#endif
+
+#endif  // TRANSPARENT_H





More information about the cfe-commits mailing list