[cfe-commits] [PATCH] [C++11 Compat] Fix breaking change in C++11 pair copyctor.
Eli Friedman
eli.friedman at gmail.com
Fri Jun 8 16:32:46 PDT 2012
On Fri, Jun 8, 2012 at 4:13 PM, Michael Spencer <bigcheesegs at gmail.com> wrote:
> While this code is valid C++98, it is not valid C++11. The problem can be
> reduced to:
>
> class MDNode;
>
> class DIType {
> operator MDNode*() const {return 0;}
> };
>
> class WeakVH {
> WeakVH(MDNode*) {}
> };
>
> int main() {
> DIType di;
> std::pair<void*, WeakVH> p(std::make_pair((void*)0, di)));
> }
>
> This was not detected by any of the bots we have because they either compile
> C++98 with libstdc++ (which allows it), or C++11 with libc++ (which incorrectly
> allows it). I ran into the problem when compiling with VS 2012 RC.
DId you file a bug against libc++?
Please try to use a consistent indentation style; otherwise, the patch
looks fine.
-Eli
More information about the cfe-commits
mailing list