diff --git a/libcxx/include/string b/libcxx/include/string --- a/libcxx/include/string +++ b/libcxx/include/string @@ -812,9 +812,7 @@ basic_string(basic_string&& __str, const allocator_type& __a); #endif // _LIBCPP_CXX03_LANG -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES template ::value, nullptr_t>::type> -#endif _LIBCPP_INLINE_VISIBILITY basic_string(const _CharT* __s) { _LIBCPP_ASSERT(__s != nullptr, "basic_string(const char*) detected nullptr"); @@ -824,9 +822,7 @@ # endif } -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES template ::value, nullptr_t>::type> -#endif _LIBCPP_INLINE_VISIBILITY basic_string(const _CharT* __s, const _Allocator& __a); @@ -837,9 +833,7 @@ _LIBCPP_INLINE_VISIBILITY basic_string(size_type __n, _CharT __c); -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES template ::value, nullptr_t>::type> -#endif _LIBCPP_INLINE_VISIBILITY basic_string(size_type __n, _CharT __c, const _Allocator& __a); @@ -1800,9 +1794,7 @@ } template -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES template -#endif basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, const _Allocator& __a) : __r_(__second_tag(), __a) { @@ -1939,9 +1931,7 @@ } template -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES template -#endif basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, _CharT __c, const _Allocator& __a) : __r_(__second_tag(), __a) { diff --git a/libcxx/test/libcxx/strings/basic.string/PR42676.sh.cpp b/libcxx/test/libcxx/strings/basic.string/PR42676.sh.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/libcxx/strings/basic.string/PR42676.sh.cpp @@ -0,0 +1,21 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// Regression test for PR42676. + +// RUN: %cxx %flags %s -o %t.exe %compile_flags -D_LIBCPP_HIDE_FROM_ABI_PER_TU +// RUN: %t.exe + +#include +#include + +int main() { + std::string s1(10u, '-', std::allocator()); (void)s1; + std::string s2("hello", std::allocator()); (void)s2; + std::string s3("hello"); (void)s3; +}