2007-03-01

How C++0x looks like?

・decltype  簡単に言えば、sizeof演算子の型を返すものというべきか。コンパイラの実装にとっては、sizeofとほぼ同じといえる。
template < typename A, template B > decltype(A+B) func(A a, B b) { return a + b ; }
・auto  これは、型をよきように計らってくれる。たとえば関数の戻り値などは、コンパイル時に型が決まっているので、容易に推測できる。
std::vector< std::list< std::string > > v ; auto iter = v.begin() ;
 ここまでを踏まえての疑問、これは許されるのだろうか。当然許されるべきであると考えているのだが。
auto ret = func() ; std::vector< decltype(ret) > v ; v.push_back(ret) ;
・concept  これについては、ConceptC++チュートリアルが、非常に分かりやすかった。いままでconceptというと、単にテンプレートがらみのコンパイルエラーが読みやすくなるだけかと思ったが、Concept mapの強力さに驚いた。 ・rvalue reference  戻り値の型が、vector< int >な関数を、気軽に書ける機能。一時的な変数は、どうせすぐに死ぬのだから、内部のポインタを移してもかまわない。ポインタを移すだけならば、大量のコピーをするより早くなる。&&と、アンパサンドを二つ記述することで表現するらしい。サンプルコードは、実際に対応したコンパイラで試してからでないと、書けそうにない。  C++はどうなってしまうのだろう。ひとつ気になることがある。まともな日本語の参考書はでるのだろうか。現状で、まともにテンプレートについて学べる日本語の参考書を知らない。Modern C++ Designは、もはやModernではなくなっているし。Bjarne Stroustrupの書いた、枕代わりになる本の邦訳ならば書いてあるのかもしれないが、まえにちらと読んだ限りでは、ただでさえ読みにくい文章が、奇妙極まりない日本語に訳されていて、半ば睡眠薬となっていた気がする。

No comments: