29 lines
582 B
C++
29 lines
582 B
C++
|
// { dg-do link }
|
||
|
// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
|
||
|
// DR127: Ambiguity in description of matching deallocation function
|
||
|
|
||
|
#include <cstddef>
|
||
|
#include <new>
|
||
|
|
||
|
struct A
|
||
|
{
|
||
|
// placement new, but can be called through normal new syntax.
|
||
|
void* operator new(std::size_t size, float = 0.0f)
|
||
|
{
|
||
|
return ::operator new(size);
|
||
|
}
|
||
|
|
||
|
// The matching deallocation function must be called, which means
|
||
|
// the placemente delete.
|
||
|
void operator delete(void*);
|
||
|
void operator delete(void*, float) {}
|
||
|
|
||
|
A()
|
||
|
{ throw 5; }
|
||
|
};
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
(void)new A;
|
||
|
}
|