summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2017-02-17 01:17:10 +0000
committerEric Fiselier <eric@efcs.ca>2017-02-17 01:17:10 +0000
commitdd3ba794ef1077fb9c3635313327e93626b540dc (patch)
tree465fce003ddfd0cef82ff78e94a05ad36744c155 /clang/lib/CodeGen/CodeGenFunction.cpp
parente43bffa7183407d252622ca5c5f64269cf7e2c14 (diff)
downloadbcm5719-llvm-dd3ba794ef1077fb9c3635313327e93626b540dc.tar.gz
bcm5719-llvm-dd3ba794ef1077fb9c3635313327e93626b540dc.zip
[libc++] Fix PR 31938 - std::basic_string constructors use non-deductible parameter types.
Summary: This patch fixes http://llvm.org/PR31938. The description below is copy/pasted from the bug: 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. @rsmith How does this look? I did more than just the constructors mentioned in the PR, but IDK how far to take it. Reviewers: mclow.lists, rsmith Reviewed By: rsmith Subscribers: cfe-commits, rsmith Differential Revision: https://reviews.llvm.org/D29863 llvm-svn: 295393
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud