8sa1-gcc/gcc/testsuite/g++.dg/cpp0x/constexpr-data1.C
Jason Merrill 54069e5959 PR c++/66297, DR 1684 - literal class and constexpr member fns
* 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
2017-05-09 16:37:44 -04:00

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;
};