2010-06-17

VC10のバグ発見

void f() {}
typedef void (&&rref_type)(void) ;

// error C2440
rref_type rref = static_cast<rref_type>(f) ; 

これは、VC10がstatic_castのオペランドに、function-to-pointer conversionを適用しているためである。なぜかというと、VC10はこの場合に、5.2.9 Static cast [expr.static.cast] paragraph 8を適用しているためである。

しかし、実際には、この場合、5.2.9 Static cast [expr.static.cast] paragraph 3が適用されるべきである。

1 comment:

  1. むむっこれはQCに是非報告しましょう。
    SP1が楽しみです。

    ReplyDelete

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.