Program Listing for File singleton.hpp

Return to documentation for file (rcppsw/patterns/singleton/singleton.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "rcppsw/rcppsw.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace rcppsw::patterns::singleton {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
template <class T>
class singleton {
 public:

  static T& instance() {
    static T inst;
    return inst;
  }

  singleton(singleton const&) = delete;
  singleton& operator=(singleton const&) = delete;
  singleton(singleton&&) = delete;
  singleton& operator=(singleton&&) = delete;

 protected:
  singleton(void) = default;
  ~singleton(void) = default;
};

} /* namespace rcppsw::patterns::singleton */