[LLVMbugs] [Bug 10250] New: __bind in <functional> is missing copy constructor

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Jul 2 10:40:59 PDT 2011


           Summary: __bind in <functional> is missing copy constructor
           Product: libc++
           Version: unspecified
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
        AssignedTo: hhinnant at apple.com
        ReportedBy: jonathan.sauer at gmx.de
                CC: llvmbugs at cs.uiuc.edu

__bind in <functional> is missing a copy constructor, since according to
12.8p18, the implicit copy assignment operator is defined as deleted if a move
copy constructor exists (which is the case in __bind).

C.f. bug 10191.

Sample program:

#include <functional>

bool foo(int, bool, float);

template <typename F> void bar(F);

template <typename F>
void baz(F f)

int main(int, char**)

And the error:

$ clang++ -std=c++0x -stdlib=libc++ clang.cpp 
clang.cpp:10:6: error: call to deleted constructor of 'std::__1::__bind<bool
(*)(int, bool, float),
clang.cpp:15:2: note: in instantiation of function template specialization
      'baz<std::__1::__bind<bool (*)(int, bool, float), > >' requested here
/usr/include/c++/v1/functional:1658:7: note: function has been explicitly
marked deleted here
class __bind
clang.cpp:5:40: note: passing argument to parameter here
template <typename F> static void bar(F);
1 error generated.

Commenting __bind's move constructor makes the error go away, as the
requirements of 12.8p18 are no longer fulfilled.

My clang version: r134322.

My libc++ version: r134322.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list