r262384 - in /branches/gcc-8-branch/libstdc++-v...

redi@gcc.gnu.org redi@gcc.gnu.org
Wed Jul 4 11:44:00 GMT 2018


Author: redi
Date: Wed Jul  4 11:44:35 2018
New Revision: 262384

URL: https://gcc.gnu.org/viewcvs?rev=262384&root=gcc&view=rev
Log:
LWG 3076 basic_string CTAD ambiguity

When deduction guides are supported by the compiler (i.e. for C++17 and
later) replace two basic_string constructors by constrained function
templates as required by LWG 3075. In order to ensure that the pre-C++17
non-template constructors are still exported from the shared library
define a macro in src/c++11/string-inst.cc to force the non-template
declarations (this isn't strictly needed yet, because the string
instantiations are compiled with -std=gnu++11, but that is likely to
change).

Backport from mainline
2018-06-16  Jonathan Wakely  <jwakely@redhat.com>

	LWG 3076 basic_string CTAD ambiguity
	* doc/xml/manual/intro.xml: Document LWG 3076 change.
	* include/bits/basic_string.h
	[__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
	(basic_string(const _CharT*, const _Alloc&)): Turn into a function
	template constrained by _RequireAllocator.
	(basic_string(size_type, _CharT, const _Alloc&)): Likewise.
	* src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
	Define.
	* testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
	deduction
	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
	Likewise.

Modified:
    branches/gcc-8-branch/libstdc++-v3/ChangeLog
    branches/gcc-8-branch/libstdc++-v3/doc/xml/manual/intro.xml
    branches/gcc-8-branch/libstdc++-v3/include/bits/basic_string.h
    branches/gcc-8-branch/libstdc++-v3/src/c++11/string-inst.cc
    branches/gcc-8-branch/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
    branches/gcc-8-branch/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc



More information about the Libstdc++-cvs mailing list