<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++11</title><link>http://blogs.wankuma.com/andochin/category/2284.aspx</link><description>今一番ナウいC++</description><managingEditor>あんどちん</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>あんどちん</dc:creator><title>仮想関数を持たずに仮想関数テーブルを持つ</title><link>http://blogs.wankuma.com/andochin/archive/2013/08/27/328084.aspx</link><pubDate>Tue, 27 Aug 2013 00:22:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2013/08/27/328084.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/328084.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2013/08/27/328084.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/328084.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/328084.aspx</trackback:ping><description>&lt;p&gt;C++11では、=deleteで関数の定義を削除できます。この機能を利用すると、以下のように仮想関数を持たないクラスに仮想関数テーブルを作成できます。&lt;/p&gt; &lt;p&gt;&lt;font color="#004000" size="3"&gt;&lt;strong&gt;struct S {&lt;br&gt;&amp;nbsp; virtual void f() = delete;&lt;br&gt;};&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;仮想関数テーブルを持てるということは、RTTIが使用できるので、何かに使えそうです。&lt;/p&gt; &lt;p&gt;ただ、使い道が思い浮かばないっていう…&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/328084.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>C++ポケットリファレンス発売されました</title><link>http://blogs.wankuma.com/andochin/archive/2013/05/15/327888.aspx</link><pubDate>Wed, 15 May 2013 00:30:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2013/05/15/327888.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/327888.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2013/05/15/327888.aspx#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/327888.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/327888.aspx</trackback:ping><description>&lt;p&gt;先行発売書店では既に発売開始したみたいです。&lt;/p&gt; &lt;p&gt;先行発売店舗は以下の通りです。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;紀伊國屋書店新宿本店&lt;/li&gt; &lt;li&gt;紀伊國屋書店新宿南店&lt;/li&gt; &lt;li&gt;書泉ブックタワー&lt;/li&gt; &lt;li&gt;三省堂神田神保町本店&lt;/li&gt; &lt;li&gt;有隣堂ヨドバシAKIBA店&lt;/li&gt; &lt;li&gt;ジュンク堂書店池袋本店&lt;/li&gt; &lt;li&gt;丸善丸の内本店&lt;/li&gt; &lt;li&gt;八重洲ブックセンター本店&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://andochin.wankuma.com/images/C_5B5/DSC00068.jpg"&gt;&lt;img title="DSC00068" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="DSC00068" src="http://andochin.wankuma.com/images/C_5B5/DSC00068_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;先行発売店舗以外では５月１８日からの発売となります。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/327888.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>C++ポケットリファレンス</title><link>http://blogs.wankuma.com/andochin/archive/2013/04/25/327861.aspx</link><pubDate>Thu, 25 Apr 2013 01:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2013/04/25/327861.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/327861.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2013/04/25/327861.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/327861.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/327861.aspx</trackback:ping><description>&lt;p&gt;ぼくも執筆に協力したC++ポケットリファレンスがようやく発売の運びとなりました。&lt;/p&gt; &lt;p&gt;&lt;a href="http://andochin.wankuma.com/images/C_516/pokeref_cover.png"&gt;&lt;img title="pokeref_cover" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="pokeref_cover" src="http://andochin.wankuma.com/images/C_516/pokeref_cover_thumb.png" width="161" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;中々カコイイ表紙です。&lt;/p&gt; &lt;p&gt;Amazonにもページできました。来月発売なのに結構いい順位になってたりして、びっくりしてます。&lt;/p&gt;&lt;iframe style="height: 240px; width: 120px" marginheight="0" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=andochin-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=4774157155" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt;あと、&lt;a href="http://gihyo.jp/book/2013/978-4-7741-5715-3"&gt;&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;技術評論社の書籍紹介ページ&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;を見ても、tweet数やfacebookの「いいね！」が結構な数になっていてびっくりです。&lt;/p&gt; &lt;p&gt;世の中のC++に対する反応っていうのは僕が思っている以上に凄いですね。&lt;/p&gt; &lt;p&gt;本の内容ですが、リファレンス本なので、「これやりたいんだけど」とか、「どう書くんだっけ？」といった場合に使う本で、所謂入門書とは違います。ただ、C++の入門書を読んだ人や、CやC#やJavaなどの言語を使ったことのある人がC++11でプログラムを書くことになった時には役に立つと思います。&lt;/p&gt; &lt;p&gt;# リファレンス本じゃなくて、C++11対応の入門書が欲しい人は…然るべき方に「書いて」って言いましょうｗ。&lt;/p&gt; &lt;p&gt;この本の最大の売りは、C++11対応でしょう。&lt;strong&gt;&lt;font color="#ff0000"&gt;日本人が日本語で書いたC++本でC++11をここまで盛り込んでいる本は今のところ無いと思います&lt;/font&gt;&lt;/strong&gt;。文法も標準ライブラリも一通り網羅していて、C++11対応。日本で出ているC++本に対する印象からすると、よくこれを出させてくれたなって思います。技術評論社さんに感謝です。&lt;/p&gt; &lt;p&gt;528ページというページ数で色々な反応がありますが、僕自身C言語ポケットリファレンスやJavaポケットリファレンス、Linuxコマンドポケットリファレンスを持っているポケリストですが、それらの本と大体同じくらいの厚さ。オーバーオールのポケットやダウンジャケットの大きめのポケットなら（たぶん）入るサイズです。鈍器と呼ぶのは1000ページ超えてからにしましょう。&lt;/p&gt; &lt;p&gt;それから、この本は電子書籍版も同時発売となります。電子書籍なら重さは気にならないですね！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/327861.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>VC11のrange-based forサポートとinitializer-list</title><link>http://blogs.wankuma.com/andochin/archive/2012/08/31/288697.aspx</link><pubDate>Fri, 31 Aug 2012 02:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2012/08/31/288697.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/288697.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2012/08/31/288697.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/288697.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/288697.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;ここ&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;に書かれているVC11のC++11サポート状況をみると、range-based for-loopがYesになっており、きちんとサポートされているように見えるのですが、「あれ？」と思ったんですね。&lt;/p&gt; &lt;p&gt;規格のrange-based for-loopのところをみるとrange-based for-loopには以下の形式もあります&lt;/p&gt; &lt;p&gt;for ( &lt;em&gt;for-range-declaration&lt;/em&gt; : &lt;em&gt;braced-init-list&lt;/em&gt; ) &lt;em&gt;statement&lt;/em&gt;&lt;/p&gt; &lt;p&gt;initializer-listをサポートしていないVCでこれが通るんでしょうか？しかし、この書式が受け付けられなければYesではなく、Partialと書いてありそうな気がします。&lt;/p&gt; &lt;p&gt;そこで、以下のコードを試してみたのですが、コンパイルエラーになりました。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;for(auto v : { 0, 1, 2, 3 }) cout &amp;lt;&amp;lt; v &amp;lt;&amp;lt; endl;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;うぅん…予想できたこととはいえ、ちょっと残念&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/288697.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>C++のrange-based for statementに与えられる型</title><link>http://blogs.wankuma.com/andochin/archive/2012/08/28/288494.aspx</link><pubDate>Tue, 28 Aug 2012 01:02:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2012/08/28/288494.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/288494.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2012/08/28/288494.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/288494.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/288494.aspx</trackback:ping><description>&lt;p&gt;C++11で導入されたrange-based for statement、範囲for文ですが、この文に適用できるオブジェクトは配列や標準ライブラリのコンテナに限りません。&lt;/p&gt; &lt;p&gt;規格から大雑把に抽出すると、以下の条件を満たしていれば範囲for文に適用できます。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;配列。配列の場合、範囲は与えられた配列の先頭から配列の要素数文を足したところまで  &lt;li&gt;与えられたオブジェクトがbegin及びendメソッドを持っている  &lt;li&gt;begin及びendメソッドを適用できる（ADLで解決されるのでstd::begin/std::endに限らない）&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;なお、&lt;font color="#000000"&gt;range-based for statementで適用されるbegin()及びend()の返すオブジェクトはoperator *()を持っていなければなりません。また、operator ++()も適用できねばなりません。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;というわけで、boost::counting_iterator的なものを作ってみました。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;#include &amp;lt;iostream&amp;gt;&lt;br&gt;&lt;br&gt;// beginとendで返すオブジェクトの型&lt;br&gt;struct Numeric {&lt;br&gt;&amp;nbsp; int i_;&lt;br&gt;&lt;br&gt;&amp;nbsp; Numeric(int t) : i_(t) {}&lt;br&gt;&lt;br&gt;&amp;nbsp; const int&amp;amp; operator *() const { return i_; }&lt;br&gt;&amp;nbsp; const Numeric&amp;amp; operator ++() { ++i_; return *this; }&lt;br&gt;&lt;br&gt;&amp;nbsp; bool operator !=(const Numeric&amp;amp; r) const { return (i_ != r.i_); }&lt;br&gt;};&lt;br&gt;&lt;br&gt;// グローバルなbegin()とend()を適用するクラス&lt;br&gt;struct NumericRangeA {&lt;br&gt;&amp;nbsp; const Numeric&amp;nbsp; begin_;&lt;br&gt;&amp;nbsp; const Numeric&amp;nbsp; end_;&lt;br&gt;&lt;br&gt;&amp;nbsp; NumericRangeA(const int&amp;amp; b, const int&amp;amp; e) : begin_(b), end_(e) {}&lt;br&gt;};&lt;br&gt;&lt;br&gt;const Numeric&amp;amp; begin(const NumericRangeA&amp;amp; t) { return t.begin_; }&lt;br&gt;const Numeric&amp;amp; end(const NumericRangeA&amp;amp; t) { return t.end_; }&lt;br&gt;&lt;br&gt;// begin()とend()メソッドを持つクラス&lt;br&gt;struct NumericRangeB {&lt;br&gt;&amp;nbsp; const Numeric&amp;nbsp; begin_;&lt;br&gt;&amp;nbsp; const Numeric&amp;nbsp; end_;&lt;br&gt;&lt;br&gt;&amp;nbsp; NumericRangeB(const int&amp;amp; b, const int&amp;amp; e) : begin_(b), end_(e) {}&lt;br&gt;&lt;br&gt;&amp;nbsp; const Numeric&amp;amp; begin() const { return begin_; }&lt;br&gt;&amp;nbsp; const Numeric&amp;amp; end() const { return end_; }&lt;br&gt;};&lt;br&gt;&lt;br&gt;int main()&lt;br&gt;{&lt;br&gt;&amp;nbsp; using namespace std;&lt;br&gt;&amp;nbsp; for(auto v : NumericRangeA(0, 10)) cout &amp;lt;&amp;lt; v &amp;lt;&amp;lt; " ";&lt;br&gt;&amp;nbsp; cout &amp;lt;&amp;lt; endl;&lt;br&gt;&amp;nbsp; for(auto v : NumericRangeB(0, 10)) cout &amp;lt;&amp;lt; v &amp;lt;&amp;lt; " ";&lt;br&gt;&amp;nbsp; cout &amp;lt;&amp;lt; endl;&lt;br&gt;}&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;font color="#008040"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;出力結果&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;0 1 2 3 4 5 6 7 8 9&lt;br&gt;10 11 12 13 14 15 16 17 18 19&lt;br&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#000000"&gt;range-based for statementも、使い方次第で面白いことができるかもしれませんね。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;それはそうと、C++erって細かい…おかげでこんなエントリ上げられたけどｗ&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/288494.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>