+ // void* version, for C users and nostalgics
+ void set_data(void* data){
+ extensions_[0]=data;
+ }
+ template <typename D> D* get_data() const { return static_cast<D*>(extensions_[0]); }
+ template <typename D> std::unique_ptr<D> get_unique_data() { return std::unique_ptr<D>(get_data<D>()); }