Re: Explicitly specializing std::min() on VC++ 2005 Express Edition
 
"Ben Voigt" <rbv@nospam.nospam> schrieb im Newsbeitrag 
news:Om29DogoHHA.1476@TK2MSFTNGP03.phx.gbl...
You need an account with Microsoft in order to report a problem to them, 
which in turn requires you to agree to about a dozen pages of legal 
English basically saying that they may do whatever they want while they 
may sue you to the max if anything goes wrong. I do not have the time to 
read all this stuff their lawyers came up with, and I'm not going to sign 
anything I haven't read, especially when it comes from Microsoft. Other 
companies are happy to receive feedback, Microsoft isn't. If they don't 
want my report, then they won't get it.
There's less legalese associated with the bug report than there is with 
using the compiler, any version, even express edition or the sdk bundle. 
There's also at least 3 VC++ MVPs involved with this thread.  I think you 
have an excellent chance of getting feedback into the system.
Here are the things requested by the feedback form.  If you will complete 
the form, I will submit the bug report.
Thank you very much for your help, I appreciate it. See below for my 
completion of the form and let me know if you need to know more.
Visual Studio and .NET Framework
Create Feedback
Reminder: Do not attach any personal information that you want to keep 
private. Feedback submissions are reviewed by Microsoft and, in some 
cases, by other community members.
* Indicates a required field.
Feedback Type
Bug
Feedback Form
Bug Submission Form
Title
* (1 line required here)
Arrays decay into pointers in conditional operator
Access Restrictions
(*) Public - all users can view, add comments, and vote on feedback 
(preferred)
( ) Private - access to this feedback is restricted to me, Microsoft, and 
others to whom Microsoft delegates
Public
( ) Blocking Issue
Description (5000 characters max)
*
You must enter a description.
If T is a template parameter which is a reference to an array, T decays 
unnecessarily into a pointer in the conditional operator.
Product Language * (pick one)
 English Chinese Simplified Chinese Traditional French German Italian 
Japanese Korean Spanish
German
Version * (pick one)
 Visual Studio 2005 (All Products and Editions) Service Pack 1 w/ Windows 
Vista Update Visual Studio 2005 (All Products and Editions) Service Pack 1 
Visual Studio 2005 (All Products and Editions) Visual C#, C++, J#, or 
Visual Basic Express Service Pack 1 w/ Windows Vista Update Visual C#, 
C++, J#, or Visual Basic Express Service Pack 1 Visual C#, C++, J#, or 
Visual Basic Express .NET Framework 2.0 Service Pack 1 .NET Framework 2.0 
.NET Framework 3.0 (includes Windows Presentation, Communication and 
Workflow Foundation) SQL Express 2005 Service Pack 1 SQL Express 2005 
Visual Studio 2005 Team Edition for Database Professionals CTP Visual 
Studio Code Name "Orcas" (Beta 1) Visual Studio Code Name "Orcas" (March 
2007 CTP) Visual FoxPro 9.0 Visual FoxPro 9.0 SP1 Visual FoxPro 9.0 SP2 
and Sedna CTP Visual J# 2.0-SE Redistributable Package Second Edition 
Other
Visual C++ 2005 Express Edition with Service Pack 1
Operating System * (pick one)
 Windows Vista Windows XP Professional Windows XP Embedded Windows XP Home 
Edition Windows XP Media Center Edition Windows XP Tablet PC Edition 
Windows 2000 Advanced Server Windows 2000 Datacenter Server Windows 2000 
Professional Windows 2000 Server Windows CE .NET Windows Mobile Windows 
Server 2003
Windows XP Professional
Operating System Language * (pick one)
 English Afrikaans Albanian Any Arabic Arabic (Algeria) Arabic (Bahrain) 
Arabic (Egypt) Arabic (Iraq) Arabic (Jordan) Arabic (Kuwait) Arabic 
(Lebanon) Arabic (Libya) Arabic (Morocco) Arabic (Oman) Arabic (Qatar) 
Arabic (Saudi Arabia) Arabic (Syria) Arabic (Tunisia) Arabic (U.A.E.) 
Arabic (Yemen) Basque Bulgarian Byelorussian Catalan Chinese Chinese (Hong 
Kong) Chinese (PRC) Chinese (Simplified) Chinese (Singapore) Chinese 
(Taiwan) Chinese (Traditional) Croatian Czech Danish Default Dutch Dutch 
(Belgian) English (Australian) English (Canadian) English (Ireland) 
English (New Zealand) English (UK) English (US) Estonian Farsi Finnish 
French French (Belgian) French (Canadian) French (Luxembourg) French 
(Swiss) Gaelic German German (Austrian) German (Liechtenstein) German 
(Luxembourg) German (Swiss) Greek Hebrew Hebrew (Israel) Hindi Hungarian 
Icelandic Indonesian Italian Italian (Swiss) Japanese Japanese (NEC) 
Kampuchean Kazakh Korean Laotian Latvian Lithuanian Macedonian Maori 
Norwegian Norwegian (Bokmal) Norwegian (Nynorsk) Polish Portuguese 
Portuguese (Brazilian) Rhaeto Roman Romanian Russian Serbo Croatian Serbo 
Croatian (Cyrillic) Serbo Croatian (Latin) Slovak Slovenian Sorbian 
Spanish Spanish (Mexican) Spanish (Modern Sort) Spanish (Traditional Sort) 
Sutu Swedish System Default Thai Tsonga Tswana Turkish Ukrainian Urdu 
Venda Vietnamese Welsh Xhosa Zulu
Which language? * (pick one)
German
 VB C# C++ J# HTML/CSS FoxPro Other
Where did you encounter the problem? * (pick one)
 .NET Framework Library C++ Library Compiler Documentation/Help IDE 
(Visual Studio UI) Team Tools and Debugger Data Tools Mobile and Embedded 
Other
Compiler
Steps to Reproduce *
(multi-line feedback here)
Compile the following code:
#include <cstring>
#include <iostream>
template <class T> struct minimum_impl
{
    static const T& minimum(
        const T& a, const T& b )
    {
        return a < b ? a : b;
    }
};
template <std::size_t N> struct minimum_impl<char[N]>
{
    static const char (& minimum( const char (&a)[N],
        const char (&b)[N] ) )[N]
    {
        // Error C2440 here.
        return std::strcmp( a, b ) < 0 ? a : b;
    }
};
template <class T> inline
const T& minimum( const T& a, const T& b )
{
    return minimum_impl<T>::minimum( a, b );
}
int main()
{
    char a[] = "a";
    char b[] = "b";
    std::cout << minimum( a, b ) << std::endl;
    return 0;
}
Actual Results *
(multi-line feedback here)
Gives a C2440 error.
Expected Results *
(multi-line feedback here)
Should compile without an error.
Please post a link to the bug report when you have submitted it, thank you! 
:-)
-- 
Best regards,
Matthias Hofmann
Anvil-Soft, CEO
-----------------------------------
www.anvil-soft.com
Anvil-Soft
Wiesentalstr. 5
90419 Nuernberg
Germany
Telephone:
+49 (0)911-93 89 29 2
Facsimile:
+49 (0)911-93 89 29 3