return Extension<T, U>(extension_create([](void* p) { delete static_cast<U*>(p); }));
}
Extendable() : extensions_(deleters_.size(), nullptr) {}
+ Extendable(const Extendable&) = delete;
+ Extendable& operator=(const Extendable&) = delete;
~Extendable()
{
/* Call destructors in reverse order of their registrations
template<class U> void extension_set(U* p) { extension_set<U>(U::EXTENSION_ID, p); }
};
-template<class T>
-std::vector<void(*)(void*)> Extendable<T>::deleters_ = {};
-
+template <class T> std::vector<void (*)(void*)> Extendable<T>::deleters_;
}
}