#include <memory> 
 
#define new new_is_deprecated_resort_to_new_unique_new_shared_or_new_unsafe new 
#define resolve_new_is_deprecated_resort_to_new_unique_new_shared_or_new_unsafe 
 
#define resolve_xx(x) resolve_##x 
#define resolve_x(x) resolve_xx(x) 
 
#define operator_new operator resolve_x(new) 
#define new_unsafe resolve_x(new) 
 
struct  new_unique_tag {  } ; 
template  < typename  T>  std:: unique_ptr < T>  operator * ( new_unique_tag, T*  p)  {  return  std:: unique_ptr < T> ( p) ;  } 
struct  new_unique_array_tag {  } ; 
template  < typename  T>  std:: unique_ptr < T [ ] >  operator * ( new_unique_array_tag, T*  p)  {  return  std:: unique_ptr < T [ ] > ( p) ;  } 
 
#define new_unique new_unique_tag() * new_unsafe 
#define new_unique_array new_unique_array_tag() * new_unsafe 
 
struct  test_custom_alloc
{ 
    void *  operator new_unsafe( size_t  size) 
	{ 
		return  :: operator  new_unsafe( size) ; 
	} 
} ; 
 
int  main( ) 
{ 
	auto  test1 =  new_unsafe int ; 
	auto  test2 =  new_unique int ; 
	( void )  test1; 
	( void )  test2; 
	return  0 ; 
} 
 
int  main_doinitwrong( ) 
{ 
	auto  test =  new  int ; 
	( void )  test; 
	return  0 ; 
} 
 
 
				I2luY2x1ZGUgPG1lbW9yeT4KCiNkZWZpbmUgbmV3IG5ld19pc19kZXByZWNhdGVkX3Jlc29ydF90b19uZXdfdW5pcXVlX25ld19zaGFyZWRfb3JfbmV3X3Vuc2FmZSBuZXcKI2RlZmluZSByZXNvbHZlX25ld19pc19kZXByZWNhdGVkX3Jlc29ydF90b19uZXdfdW5pcXVlX25ld19zaGFyZWRfb3JfbmV3X3Vuc2FmZQoKI2RlZmluZSByZXNvbHZlX3h4KHgpIHJlc29sdmVfIyN4CiNkZWZpbmUgcmVzb2x2ZV94KHgpIHJlc29sdmVfeHgoeCkKCiNkZWZpbmUgb3BlcmF0b3JfbmV3IG9wZXJhdG9yIHJlc29sdmVfeChuZXcpCiNkZWZpbmUgbmV3X3Vuc2FmZSByZXNvbHZlX3gobmV3KQoKc3RydWN0IG5ld191bmlxdWVfdGFnIHsgfTsKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0ZDo6dW5pcXVlX3B0cjxUPiBvcGVyYXRvciAqKG5ld191bmlxdWVfdGFnLCBUKiBwKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4ocCk7IH0Kc3RydWN0IG5ld191bmlxdWVfYXJyYXlfdGFnIHsgfTsKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0ZDo6dW5pcXVlX3B0cjxUIFtdPiBvcGVyYXRvciAqKG5ld191bmlxdWVfYXJyYXlfdGFnLCBUKiBwKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VCBbXT4ocCk7IH0KCiNkZWZpbmUgbmV3X3VuaXF1ZSBuZXdfdW5pcXVlX3RhZygpICogbmV3X3Vuc2FmZQojZGVmaW5lIG5ld191bmlxdWVfYXJyYXkgbmV3X3VuaXF1ZV9hcnJheV90YWcoKSAqIG5ld191bnNhZmUKCnN0cnVjdCB0ZXN0X2N1c3RvbV9hbGxvYwp7CiAgICB2b2lkKiBvcGVyYXRvciBuZXdfdW5zYWZlKHNpemVfdCBzaXplKQoJewoJCXJldHVybiA6Om9wZXJhdG9yIG5ld191bnNhZmUoc2l6ZSk7Cgl9Cn07CgppbnQgbWFpbigpCnsKCWF1dG8gdGVzdDEgPSBuZXdfdW5zYWZlIGludDsKCWF1dG8gdGVzdDIgPSBuZXdfdW5pcXVlIGludDsKCSh2b2lkKSB0ZXN0MTsKCSh2b2lkKSB0ZXN0MjsKCXJldHVybiAwOwp9CgppbnQgbWFpbl9kb2luaXR3cm9uZygpCnsKCWF1dG8gdGVzdCA9IG5ldyBpbnQ7Cgkodm9pZCkgdGVzdDsKCXJldHVybiAwOwp9Cg==
				
				 
				 
				 
				 
			 
			
				
			
			
				
	
		
	 
	
		  compilation info 
		 
	 
	prog.cpp: In function ‘int main_doinitwrong()’:
prog.cpp:3:13: error: ‘new_is_deprecated_resort_to_new_unique_new_shared_or_new_unsafe’ was not declared in this scope
 #define new new_is_deprecated_resort_to_new_unique_new_shared_or_new_unsafe new
             ^
prog.cpp:39:14: note: in expansion of macro ‘new’
  auto test = new int;
              ^
 
		
		 
	
		
		  stdout