X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9e2e32849ed01a869c9c70e78014e6938f098be5..73e607f967e2718e312e0c93485a4c77ad49c019:/include/xbt/Extendable.hpp diff --git a/include/xbt/Extendable.hpp b/include/xbt/Extendable.hpp index 1da9b31238..5acaebed94 100644 --- a/include/xbt/Extendable.hpp +++ b/include/xbt/Extendable.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2015. The SimGrid Team. +/* Copyright (c) 2015-2019. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -22,7 +22,7 @@ class Extension { static const std::size_t INVALID_ID = std::numeric_limits::max(); std::size_t id_; friend class Extendable; - constexpr Extension(std::size_t id) : id_(id) {} + explicit constexpr Extension(std::size_t id) : id_(id) {} public: explicit constexpr Extension() : id_(INVALID_ID) {} std::size_t id() const { return id_; } @@ -64,9 +64,11 @@ public: template static Extension extension_create() { - return extension_create([](void* p){ delete static_cast(p); }); + return Extension(extension_create([](void* p) { delete static_cast(p); })); } Extendable() : extensions_(deleters_.size(), nullptr) {} + Extendable(const Extendable&) = delete; + Extendable& operator=(const Extendable&) = delete; ~Extendable() { /* Call destructors in reverse order of their registrations @@ -115,9 +117,7 @@ public: template void extension_set(U* p) { extension_set(U::EXTENSION_ID, p); } }; -template -std::vector Extendable::deleters_ = {}; - +template std::vector Extendable::deleters_; } }