[LLVMbugs] [Bug 15724] New: set: default construction does not work properly

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Apr 11 08:08:19 PDT 2013


            Bug ID: 15724
           Summary: set: default construction does not work properly
           Product: libc++
           Version: unspecified
          Hardware: Macintosh
                OS: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: hhinnant at apple.com
          Reporter: akim.demaille at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

In the following piece of code, if I understand correctly libc++'s own header
(the initial "Synopsis" section), there is:

            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
    explicit set(const value_compare& comp);

i.e., the default constructor is not flagged with explicit.

Yet, the following piece of code does not work, because there is no default
constructor: its functionality is provided by the following (explicit)
unary-constructor whose argument is optional.  So clang rejects the following
piece of code.

$ cat /tmp/set.cc
#include <set>
  std::set<int> s = {};
$ clang++-mp-3.3 -std=c++11 -Wall /tmp/set.cc -stdlib=libc++
/tmp/set.cc:5:17: error: chosen constructor is explicit in copy-initialization
  std::set<int> s = {};
                ^   ~~
/opt/local/libexec/llvm-3.3/bin/../lib/c++/v1/set:378:14: note: constructor
declared here
    explicit set(const value_compare& __comp = value_compare())
1 error generated.
$ g++-mp-4.8 -std=c++11 -Wall /tmp/set.cc

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130411/39d1578a/attachment.html>

More information about the llvm-bugs mailing list