Carna  Version 3.3.2
Classes | Namespaces | Macros
noncopyable.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Carna::base::noncopyable
 Objects from classes inheriting this cannot be copied. More...
 

Namespaces

 Carna::base
 Contains the core framework components.
 

Macros

#define NON_COPYABLE   private: ::Carna::base::noncopyable __noncopyable;
 Features class it is placed in as non-copyable. More...
 

Detailed Description

Defines Carna::base::noncopyable and NON_COPYABLE.

Definition in file noncopyable.h.

Macro Definition Documentation

◆ NON_COPYABLE

#define NON_COPYABLE   private: ::Carna::base::noncopyable __noncopyable;

Features class it is placed in as non-copyable.

Example:

class MyClass
{
public:
MyClass();
}; // MyClass
class MyCopyableClass : public MyClass
{
public:
MyCopyableClass();
MyCopyableClass( const MyCopyableClass& );
MyCopyableClass& operator=( const MyCopyableClass& );
}; // MyCopyableClass

This example also shows why the macro variant is to be preferred in place of the noncopyable super-class: In case some derivation becomes copyable, the "is" semantics stay valid.

Definition at line 109 of file noncopyable.h.