OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [init/] [pr25811-4.C] - Rev 693

Compare with Previous | Blame | View Log

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

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.