{"html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.little-cuckoo.jp%2Fentry%2F20051113%2F1131881076\" title=\"Generic Template Method \u3092\u52d5\u7684\u306a\u591a\u614b\u306b\u5bfe\u5fdc\u3055\u305b\u3066\u307f\u305f - \u9591\u53e4\u9ce5\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","image_url":null,"provider_name":"Hatena Blog","description":"\u304b\u306a\u308a\u5f37\u5f15\u306b\u3002 #include <memory> class wrap_base { struct holder_base { virtual void execute() = 0; }; template<typename T> struct holder : public holder_base { T& instance; holder(T& value) : instance(value) {} void execute() { instance.execute(); } }; std::auto_ptr<holder_base> obj_; public: template<typ\u2026","title":"Generic Template Method \u3092\u52d5\u7684\u306a\u591a\u614b\u306b\u5bfe\u5fdc\u3055\u305b\u3066\u307f\u305f","width":"100%","author_url":"https://blog.hatena.ne.jp/wata_d/","blog_url":"https://www.little-cuckoo.jp/","blog_title":"\u9591\u53e4\u9ce5","url":"https://www.little-cuckoo.jp/entry/20051113/1131881076","type":"rich","provider_url":"https://hatena.blog","height":"190","published":"2005-11-13 20:24:36","version":"1.0","author_name":"wata_d","categories":["C++","programming"]}