r266565 - in /trunk/libstdc++-v3: ChangeLog inc...

redi@gcc.gnu.org redi@gcc.gnu.org
Wed Nov 28 15:27:00 GMT 2018


Author: redi
Date: Wed Nov 28 15:27:11 2018
New Revision: 266565

URL: https://gcc.gnu.org/viewcvs?rev=266565&root=gcc&view=rev
Log:
PR libstdc++/83306 make filesystem_error no-throw copyable

The class API provides no way to modify the members, so we can share
them between copies of the same object. Copying becomes a simple
reference count update, which doesn't throw.

Also adjust the what() string to allow distinguishing between an empty
path passed to the constructor, and no path.

	PR libstdc++/83306
	* include/bits/fs_path.h (filesystem_error): Move data members into
	pimpl class owned by shared_ptr. Remove inline definitions of member
	functions.
	* src/filesystem/std-path.cc (filesystem_error::_Impl): Define.
	(filesystem_error): Define member functions.
	* testsuite/27_io/filesystem/filesystem_error/cons.cc: New test.
	* testsuite/27_io/filesystem/filesystem_error/copy.cc: New test.

Added:
    trunk/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/
    trunk/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
    trunk/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/bits/fs_path.h
    trunk/libstdc++-v3/src/filesystem/std-path.cc



More information about the Libstdc++-cvs mailing list