* constexpr.c (is_valid_constexpr_fn): Only complain about non-literal enclosing class in C++11. * class.c (finalize_literal_type_property): Likewise. From-SVN: r247813
43 lines
620 B
C
43 lines
620 B
C
// { dg-do compile { target c++11 } }
|
|
|
|
// From N2235
|
|
|
|
// 1
|
|
struct A2
|
|
{
|
|
static const int eights = 888;
|
|
static constexpr int nines = 999;
|
|
};
|
|
|
|
A2 a;
|
|
|
|
// 2
|
|
struct pixel
|
|
{
|
|
int x, y;
|
|
};
|
|
constexpr pixel ur = { 1294, 1024 }; // OK
|
|
|
|
// p4
|
|
struct Length
|
|
{
|
|
explicit constexpr Length(int i = 0) : val(i) { }
|
|
private:
|
|
int val;
|
|
};
|
|
|
|
constexpr int myabs(int x)
|
|
{ return x < 0 ? -x : x; } // OK
|
|
|
|
Length l(myabs(-97)); // OK
|
|
|
|
// p6
|
|
class debug_flag
|
|
{
|
|
public:
|
|
explicit debug_flag(bool);
|
|
constexpr bool is_on(); // { dg-error "enclosing class .* not a literal type" "" { target c++11_only } }
|
|
private:
|
|
bool flag;
|
|
};
|