// { 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);
