< prev index next >

src/hotspot/share/utilities/macros.hpp

Print this page
rev 57094 : [mq]: macro
rev 57096 : [mq]: trailing_semi

*** 44,53 **** --- 44,66 ---- // sufficient, but two are used because of bugs in some preprocesors. #define PASTE_TOKENS(x, y) PASTE_TOKENS_AUX(x, y) #define PASTE_TOKENS_AUX(x, y) PASTE_TOKENS_AUX2(x, y) #define PASTE_TOKENS_AUX2(x, y) x ## y + // Declare the named class to be noncopyable. This macro must be used in + // a private part of the class's definition, followed by a semi-colon. + // Doing so provides private declarations for the class's copy constructor + // and assignment operator. Because these operations are private, most + // potential callers will fail to compile because they are inaccessible. + // The operations intentionally lack a definition, to provoke link-time + // failures for calls from contexts where they are accessible, e.g. from + // within the class or from a friend of the class. + // Note: The lack of definitions is still not completely bullet-proof, as + // an apparent call might be optimized away by copy elision. + // For C++11 the declarations should be changed to deleted definitions. + #define NONCOPYABLE(C) C(C const&); C& operator=(C const&) /* next token must be ; */ + // -DINCLUDE_<something>=0 | 1 can be specified on the command line to include // or exclude functionality. #ifndef INCLUDE_JVMTI #define INCLUDE_JVMTI 1
< prev index next >