// { dg-do compile { target c++14_only } }

#include <type_traits>

#define IS_LIT(T) (std::is_literal_type<T>::value)
#define SA(X) static_assert (X, #X)
#define YES(T) SA(IS_LIT(T))
#define NO(T) SA(!IS_LIT(T))

enum E1 { };
enum class E2 { };
struct Literal {};

struct NotLiteral {
  ~NotLiteral();
};

YES(int);
YES(int[]);
YES(int[3]);
YES(double);
YES(void *);
YES(decltype (nullptr));
YES(int Literal::*);
YES(void (Literal::*)());
YES(E1);
YES(E2);
YES(Literal);
NO (NotLiteral);
YES(NotLiteral *);
YES(NotLiteral NotLiteral::*);
YES(NotLiteral (NotLiteral::*)(NotLiteral));

struct A {
  A(const A&) = default;
  A(int);
};

NO(A);				// no constexpr ctor other than copy
