is_assignable.pass.cpp revision 1468b668aa964beb1220e9b36162b092fb54952b
143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//===----------------------------------------------------------------------===//
243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//
343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//                     The LLVM Compiler Infrastructure
443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//
543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// This file is dual licensed under the MIT and the University of Illinois Open
643dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// Source Licenses. See LICENSE.TXT for details.
743dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//
843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//===----------------------------------------------------------------------===//
943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
1043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// type_traits
1143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
1243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// is_assignable
1343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
1443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include <type_traits>
15ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek
16769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidisstruct A
17d1e5a89226da79f7e6f43d40facc46abda9e5245Jordy Rose{
18769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis};
199fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis
2043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisstruct B
2143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis{
2243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis    void operator=(A);
2343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis};
24d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis
25d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidisint main()
26d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis{
27d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert(( std::is_assignable<int&, int&>::value), "");
28d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert(( std::is_assignable<int&, int>::value), "");
29d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert((!std::is_assignable<int, int&>::value), "");
30d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert((!std::is_assignable<int, int>::value), "");
31d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert(( std::is_assignable<int&, double>::value), "");
32d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert(( std::is_assignable<B, A>::value), "");
33d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    static_assert((!std::is_assignable<A, B>::value), "");
34d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis}
35d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis