[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