diff --git a/src/globals.h b/src/globals.h index f00e676dde..e695e94d4e 100644 --- a/src/globals.h +++ b/src/globals.h @@ -327,11 +327,18 @@ F FUNCTION_CAST(Address addr) { } +#if __cplusplus >= 201103L +#define DISALLOW_BY_DELETE = delete +#else +#define DISALLOW_BY_DELETE +#endif + + // A macro to disallow the evil copy constructor and operator= functions // This should be used in the private: declarations for a class -#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ - TypeName(const TypeName&); \ - void operator=(const TypeName&) +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&) DISALLOW_BY_DELETE; \ + void operator=(const TypeName&) DISALLOW_BY_DELETE // A macro to disallow all the implicit constructors, namely the @@ -341,7 +348,7 @@ F FUNCTION_CAST(Address addr) { // that wants to prevent anyone from instantiating it. This is // especially useful for classes containing only static methods. #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ - TypeName(); \ + TypeName() DISALLOW_BY_DELETE; \ DISALLOW_COPY_AND_ASSIGN(TypeName)