Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: "Tom Widmer [VC++ MVP]" <tom_usenet@xxxxxxxxxxx>
- Date: Thu, 10 May 2007 18:33:34 +0100
Matthias Hofmann wrote:
"Tom Widmer [VC++ MVP]" <tom_usenet@xxxxxxxxxxx> schrieb im Newsbeitrag news:OJCC7GlkHHA.1340@xxxxxxxxxxxxxxxxxxxxxxxMatthias Hofmann wrote:"Tom Widmer [VC++ MVP]" <tom_usenet@xxxxxxxxxxx> schrieb im Newsbeitrag news:uCq1XvVkHHA.4188@xxxxxxxxxxxxxxxxxxxxxxxIt's been reported and fixed apparently:
The problem is that VC2005 is ignoring 5.16/4 (about ?: ):That's good news, I first thought that there was a bug in my code.
"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.
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.
It doesn't? Did you look at the steps to reproduce? The specific error mentioned there is:
copy_t& D = (epsilon>0) ? (A) : (B); // this does not work
where copy_t is an array type (2D I think), which is essentially the problem you were having, wasn't it? It's possible they've fixed a special case of the general error. A simple test case is:
int main()
{
int a[1];
int (&aref)[1] = 1 ? a : a;
}
That should compile I think, but doesn't on my VC2005, no SP.
Tom
.
- Follow-Ups:
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- References:
- Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Tom Widmer [VC++ MVP]
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Tom Widmer [VC++ MVP]
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Tom Widmer [VC++ MVP]
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Tom Widmer [VC++ MVP]
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Tom Widmer [VC++ MVP]
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Tom Widmer [VC++ MVP]
- Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- From: Matthias Hofmann
- Explicitly specializing std::min() on VC++ 2005 Express Edition
- Prev by Date: Re: single precision from double in debug mode
- Next by Date: Re: single precision from double in debug mode
- Previous by thread: Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- Next by thread: Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
- Index(es):
Relevant Pages
|
Loading