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