LibCarna Version 3.4.0
Loading...
Searching...
No Matches
Classes | Namespaces | Macros
noncopyable.hpp File Reference

Defines LibCarna::base::noncopyable and NON_COPYABLE. More...

Go to the source code of this file.

Classes

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

Namespaces

namespace  LibCarna::base
 Contains the core framework components.
 

Macros

#define NON_COPYABLE   private: ::LibCarna::base::noncopyable __noncopyable;
 Marks the class that it is placed in as non-copyable.
 

Detailed Description

Defines LibCarna::base::noncopyable and NON_COPYABLE.

Definition in file noncopyable.hpp.

Macro Definition Documentation

◆ NON_COPYABLE

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

Marks the class that 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
#define NON_COPYABLE
Marks the class that it is placed in as non-copyable.

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

Definition at line 109 of file noncopyable.hpp.