[llvm-bugs] [Bug 31938] New: libc++ declares basic_string constructors with non-deducible types
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Feb 10 18:38:03 PST 2017
https://llvm.org/bugs/show_bug.cgi?id=31938
Bug ID: 31938
Summary: libc++ declares basic_string constructors with
non-deducible types
Product: libc++
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: richard-llvm at metafoo.co.uk
CC: llvm-bugs at lists.llvm.org, mclow.lists at gmail.com
Classification: Unclassified
The standard says:
template<class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT>>
class basic_string {
using value_type = typename traits::char_type;
// ...
basic_string(const charT* s, const Allocator& a = Allocator());
};
libc++ actually chooses to declare the constructor as
basic_string(const value_type* s, const Allocator& a = Allocator());
The implicit deduction guides from class template argument deduction make what
was previously an implementation detail visible:
std::basic_string s = "foo"; // error, can't deduce charT.
The constructor in question is in the libc++ DSO, but fortunately it looks like
fixing this will not result in an ABI break.
--
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/20170211/c6cfc184/attachment-0001.html>
More information about the llvm-bugs
mailing list