view gcc/testsuite/g++.dg/init/new25.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/31988
#include <new>

class C
{
public:
  void* operator new(std::size_t = 32) throw (std::bad_alloc); // { dg-error "9:the first parameter of .operator new. cannot have a default argument" }
							       // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
							       // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
  void* operator new[](std::size_t = 32) throw (std::bad_alloc); // { dg-error "9:the first parameter of .operator new. cannot have a default argument" }
								 // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
								 // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
  void* operator new(std::size_t = 32, const std::nothrow_t&) throw(); // { dg-error "9:the first parameter of .operator new. cannot have a default argument" }
  void* operator new[](std::size_t = 32, const std::nothrow_t&) throw(); // { dg-error "9:the first parameter of .operator new. cannot have a default argument" }
};

class D
{
public:
  void* operator new(std::size_t,
		     const std::nothrow_t& = std::nothrow_t()) throw();
  void* operator new[](std::size_t,
		       const std::nothrow_t& = std::nothrow_t()) throw();
};

class E
{
public:
  void* operator new(std::size_t = 0,  // { dg-error "9:the first parameter of .operator new. cannot have a default argument" }
		     const std::nothrow_t& = std::nothrow_t()) throw();
  void* operator new[](std::size_t = 0,  // { dg-error "9:the first parameter of .operator new. cannot have a default argument" }
		       const std::nothrow_t& = std::nothrow_t()) throw();
};