{"height":"190","title":" class \u3092 noncopyable \u306b\u3059\u308b","provider_name":"Hatena Blog","categories":["c++"],"html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fpyopyopyo.hatenablog.com%2Fentry%2F20180118%2Fp1\" title=\" class \u3092 noncopyable \u306b\u3059\u308b - pyopyopyo - Linux\u3068\u304b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u899a\u3048\u66f8\u304d - \" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","author_url":"https://blog.hatena.ne.jp/pyopyopyo/","blog_url":"https://pyopyopyo.hatenablog.com/","description":"\u4eca\u6642\u306ec++ (c++11\u306a\u3069\uff09\u3067\u30b3\u30d4\u30fc\u7981\u6b62\uff0c\u4ee3\u5165\u7981\u6b62\u306e\u30af\u30e9\u30b9\u3092\u4f5c\u308b\u65b9\u6cd5 template <class T> struct CRTPnoncopyable { CRTPnoncopyable(const CRTPnoncopyable&) = delete; CRTPnoncopyable& operator=(const CRTPnoncopyable &) = delete; }; class A : CRTPnoncopyable<A> {}; \u3053\u308c\u3067class A\u306f\u30b3\u30d4\u30fc\u7981\u6b62\u306b\u306a\u308b*1 *2Boost \u306e noncopyable \u3092\u4f7f\u3046\u65b9\u6cd5\u3082\u3042\u308b *3 #include <boost\u2026","version":"1.0","image_url":"https://images-fe.ssl-images-amazon.com/images/I/51ng4usMVYL._SL160_.jpg","author_name":"pyopyopyo","url":"https://pyopyopyo.hatenablog.com/entry/20180118/p1","published":"2018-01-18 00:00:00","blog_title":"pyopyopyo - Linux\u3068\u304b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u899a\u3048\u66f8\u304d - ","provider_url":"https://hatena.blog","type":"rich","width":"100%"}