
On 3/18/2011 3:36 PM, Stephan T. Lavavej wrote:
[Mathias Gaunard]
Here is a testcase of another bug that causes an error in result_of: This fails with an error message in _Remove_reference called by _Result_of.
I've verified that this fails to compile with VC10 RTM/SP1 and successfully compiles with my current build of VC11:
C:\Temp>type meow.cpp #include<functional>
void foo(int) { }
struct bar_t { template<typename Sig> struct result;
template<typename This, typename F> struct result<This(F)> { typedef void type; };
template<typename F> void operator()(const F&) const { } };
template<typename F> typename std::result_of<bar_t(const F&)>::type bar(const F& f) { bar_t b; return b(f); }
void call_foo() { bar(foo); }
C:\Temp>cl Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 17.00.40316 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
C:\Temp>cl /EHsc /nologo /W4 /c meow.cpp meow.cpp
C:\Temp>
John Maddock reported a bunch of type traits bugs to us, which I filed as the "Consolidated Omnibus Type Traits Bug of 2010", and we fixed them all. (Most of them were library bugs, but a couple were compiler bugs, as I recall.)
If you don't like Connect, you can report C++ Standard Library bugs directly to me. My capacity to fix bugs isn't *infinite* (more like exponentially reallocating), but I'll do my best.
Like Eric, I have reported numerous C++ ( and C++/CLI ) issues to Microsoft over the years, and particularly since .Net in 2001, which Microsoft will not fix as long as some workaround exists. While I appreciate the fact that Microsoft will indeed look for a workaround if you ask them, the fact that these C++ bugs continue unfixed release after release simply means that it is more likely that C++ programmers will run into them eventually, and then have to waste their time and efforts finding the workaround rather than doing constructive programming. I have my doubts whether this same approach is taken with C# and VB Net. I don't know who the "us" is to whom John Maddock reported his type trait bugs and I do not know what you mean by "C++ standard library bugs". Care to explain ?