
John Maddock wrote:
If you pass a pair of std::size_t's to std::min or std::max then:
* You get no warning if the min/max<unsigned> templates haven't been instantiated yet. * A warning if some other code has already instantiated std::min/max<unsigned>.
Truely weird and very annoying indeed !
Apparently the template is instantiated per truly different type, but it carries the __w64 annotation of the first such type it is instantiated with. In other words, if the first instantiation is min<unsigned>, passing the "unsigned __w64" size_t causes the warning. Makes me wonder, if the first instantiation is min<unsigned __w64>, does assigning the return value of min(unsigned, unsigned) to unsigned cause the warning, too? In any case, definitely an MS bug. A very tricky one. Sebastian Redl