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



"Victor Bazarov" <v.Abazarov@xxxxxxxxxxxx> schrieb im Newsbeitrag
news:f1avnp$gk4$1@xxxxxxxxxxxxxxxxxx
Carl Daniel [VC++ MVP] wrote:
"Victor Bazarov" <v.Abazarov@xxxxxxxxxxxx> wrote in message
news:f1apn5$cb$1@xxxxxxxxxxxxxxxxxx
Carl Daniel [VC++ MVP] wrote:
Just write it as an ordinary overload and you won't have any
problem:

But you're not allowed to put anything in the 'std' namespace unless
it's a specialisation of a standard template... <g>

Technicaliaties - they get you every time! But then again, it does
work...

Where would the world be [today] if compilers would actually enforce
the entire Standard? Perish the thought...

VC++ 2005 Express Edition does seem to enforce it - the overload is not
called in the following example:

#include <algorithm> // Defines std::min().
#include <cstring> // Defines std::strcmp().
#include <iostream> // Defines std::cout and std::endl.

namespace std
{
inline const char* min(
const char* a, const char* b )
{
return std::strcmp( a, b ) < 0 ? a : b;
}
}

int main()
{
char* p1 = "b";
char* p2 = "a";

std::cout << std::min( p1, p2 ) << std::endl;

return 0;
}

--
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


Quantcast