Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp0x/sfinae66.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 2b5abeee2509 |
children |
line wrap: on
line source
// PR c++/95143 // { dg-do compile { target c++11 } } struct false_type { static constexpr bool value = false; }; struct true_type{ static constexpr bool value = true; }; template<class T> T&& declval() noexcept; template<typename T, typename U, typename = U> struct is_static_castable : false_type {}; template<typename T, typename U> struct is_static_castable<T, U, decltype(static_cast<U>(declval<T>()))> : true_type {}; class Base { }; struct A { }; class B: public Base { }; int main() { constexpr auto canCast = is_static_castable<A, B>::value; static_assert(!canCast, ""); constexpr auto canCast2 = is_static_castable<A, A>::value; static_assert(canCast2, ""); }