Viewing file: pr25811-4.C (1012 B) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-do compile } // { dg-options "-fpermissive" }
struct A { int const i; }; struct B { int& i; }; struct C { int i; };
template< class T > class is_constructible_via_new_without_initializer { template<int> class size {};
typedef char yes_type; struct no_type { char data[2]; };
template <class U> static yes_type sfinae (size< sizeof (new U) >*);
template <class U> static no_type sfinae (...);
public: static const bool value = sizeof (sfinae<T>(0)) == sizeof (yes_type); };
#define JOIN( X, Y ) DO_JOIN( X, Y ) #define DO_JOIN( X, Y ) DO_JOIN2(X,Y) #define DO_JOIN2( X, Y ) X##Y
#ifdef __GXX_EXPERIMENTAL_CXX0X__ # define STATIC_ASSERT(Expr) static_assert(Expr, #Expr) #else # define STATIC_ASSERT(Expr) int JOIN(a,__LINE__)[Expr? 1 : -1] #endif
STATIC_ASSERT (!is_constructible_via_new_without_initializer<A>::value); STATIC_ASSERT (!is_constructible_via_new_without_initializer<B>::value); STATIC_ASSERT (is_constructible_via_new_without_initializer<C>::value);
|