Re: Explicitly specializing std::min() on VC++ 2005 Express Edition



"Tom Widmer [VC++ MVP]" <tom_usenet@xxxxxxxxxxx> schrieb im Newsbeitrag
news:OJCC7GlkHHA.1340@xxxxxxxxxxxxxxxxxxxxxxx
Matthias Hofmann wrote:
"Tom Widmer [VC++ MVP]" <tom_usenet@xxxxxxxxxxx> schrieb im Newsbeitrag
news:uCq1XvVkHHA.4188@xxxxxxxxxxxxxxxxxxxxxxx

The problem is that VC2005 is ignoring 5.16/4 (about ?: ):
"If the second and third operands are lvalues and have the same type,
the result is of that type and is an lvalue."

Instead, it is applying the lvalue-to-rvalue conversion (e.g. the
array-to-pointer conversion) to the parts of the ?: expression, and thus
trying to return a pointer where an array is expected.

That's good news, I first thought that there was a bug in my code.

It's been reported and fixed apparently:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=101496

I have just downloaded and installed Service Pack 1 for VC++ 2005 Express
Edition, which I found here:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7b0b0339-613a-46e6-ab4d-080d4d4a8c4e

The file I downloaded is named 'VS80sp1-KB926748-X86-INTL.exe'.
Unfortunately, it did not fix the bug, which shouldn't be a surprise, as the
report whose link you provided does not address any issues related to the
conditional operator.

--
Matthias Hofmann
Anvil-Soft, CEO
http://www.anvil-soft.com - The Creators of Toilet Tycoon
http://www.anvil-soft.de - Die Macher des Klomanagers




.



Relevant Pages

  • Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
    ... "If the second and third operands are lvalues and have the same type, the result is of that type and is an lvalue." ... Unfortunately, it did not fix the bug, which shouldn't be a surprise, as the report whose link you provided does not address any issues related to the conditional operator. ... where copy_t is an array type, which is essentially the problem you were having, wasn't it? ... int main ...
    (microsoft.public.vc.language)
  • Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
    ... Matthias Hofmann wrote: ... "If the second and third operands are lvalues and have the same type, the result is of that type and is an lvalue." ... Instead, it is applying the lvalue-to-rvalue conversion to the parts of the ?: expression, and thus trying to return a pointer where an array is expected. ...
    (microsoft.public.vc.language)

Loading