VCの独自規格で、一部のrvalueがlvalueとして使えてしまうのは驚いた。こんな独自仕様では、プログラマの誤解を招くだろうし、ひどい互換性の問題を引き起こしていそうだ。
まあでも、C++0xのrvalue referenceを使うには、lvalueとrvalueの違いを理解しなくてはならないから、将来的には少しマシになるのかもしれない。でも、規格を読んで言語を学ぼうとする、骨のあるプログラマは少ないので、あまりマシにはならないかもしれない。
しかし、rvalue referenceと、このVCの独自仕様は共存できるのだろうか。少し頭の中で考えてみたが、共存できないというコードは思いつかなかった。むしろ、rvalue referenceが関数の戻り値の型であるコードと、あまり変わらないような気さえする
struct Foo { void func() {} } ; Foo f() { return Foo() ; } Foo && g() { return Foo() ; } void h() { f().func() ; // Error. ただし現行のVCでは通る g().func() ; // OK. }
No comments:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.