public inbox for libstdc++-cvs@sourceware.org help / color / mirror / Atom feed
From: Jonathan Wakely <redi@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r11-9290] libstdc++: Name std::function template parameter Date: Wed, 24 Nov 2021 11:51:23 +0000 (GMT) [thread overview] Message-ID: <20211124115123.30A55385842B@sourceware.org> (raw) https://gcc.gnu.org/g:5709564895f38d7d1f76e6298514ed242f676bb8 commit r11-9290-g5709564895f38d7d1f76e6298514ed242f676bb8 Author: Jonathan Wakely <jwakely@redhat.com> Date: Fri Aug 27 00:20:31 2021 +0100 libstdc++: Name std::function template parameter This avoids "<template-parameter-2-2>" being shown in the diagnostics for ill-formed uses of std::function constructor: In instantiation of 'std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = f(f()::_Z1fv.frame*)::<lambda()>; <template-parameter-2-2> = void; _Res = void; _ArgTypes = {}]' Instead we get: In instantiation of 'std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = f(f()::_Z1fv.frame*)::<lambda()>; _Constraints = void; _Res = void; _ArgTypes = {}]' Signed-off-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: * include/bits/std_function.h (function::function(F&&)): Give name to defaulted template parameter, to improve diagnostics. Use markdown for more doxygen comments. (cherry picked from commit 952095bb053cfef47b48cc4345d658b8d8829800) Diff: --- libstdc++-v3/include/bits/std_function.h | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/libstdc++-v3/include/bits/std_function.h b/libstdc++-v3/include/bits/std_function.h index 8dfbd11f71e..f58d732430d 100644 --- a/libstdc++-v3/include/bits/std_function.h +++ b/libstdc++-v3/include/bits/std_function.h @@ -326,10 +326,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { }; /** - * @brief Primary class template for std::function. + * @brief Polymorphic function wrapper. * @ingroup functors - * - * Polymorphic function wrapper. + * @since C++11 */ template<typename _Res, typename... _ArgTypes> class function<_Res(_ArgTypes...)> @@ -364,7 +363,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @brief Default construct creates an empty function call wrapper. - * @post @c !(bool)*this + * @post `!(bool)*this` */ function() noexcept : _Function_base() { } @@ -379,10 +378,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @brief %Function copy constructor. * @param __x A %function object with identical call signature. - * @post @c bool(*this) == bool(__x) + * @post `bool(*this) == bool(__x)` * - * The newly-created %function contains a copy of the target of @a - * __x (if it has one). + * The newly-created %function contains a copy of the target of + * `__x` (if it has one). */ function(const function& __x) : _Function_base() @@ -399,7 +398,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @brief %Function move constructor. * @param __x A %function object rvalue with identical call signature. * - * The newly-created %function contains the target of @a __x + * The newly-created %function contains the target of `__x` * (if it has one). */ function(function&& __x) noexcept @@ -418,22 +417,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @brief Builds a %function that targets a copy of the incoming * function object. * @param __f A %function object that is callable with parameters of - * type @c T1, @c T2, ..., @c TN and returns a value convertible - * to @c Res. + * type `ArgTypes...` and returns a value convertible to `Res`. * * The newly-created %function object will target a copy of - * @a __f. If @a __f is @c reference_wrapper<F>, then this function - * object will contain a reference to the function object @c - * __f.get(). If @a __f is a NULL function pointer or NULL - * pointer-to-member, the newly-created object will be empty. + * `__f`. If `__f` is `reference_wrapper<F>`, then this function + * object will contain a reference to the function object `__f.get()`. + * If `__f` is a null function pointer, null pointer-to-member, or + * empty `std::function`, the newly-created object will be empty. * - * If @a __f is a non-NULL function pointer or an object of type @c - * reference_wrapper<F>, this function will not throw. + * If `__f` is a non-null function pointer or an object of type + * `reference_wrapper<F>`, this function will not throw. */ // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2774. std::function construction vs assignment template<typename _Functor, - typename = _Requires<_Callable<_Functor>>> + typename _Constraints = _Requires<_Callable<_Functor>>> function(_Functor&& __f) noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) : _Function_base()
reply other threads:[~2021-11-24 11:51 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211124115123.30A55385842B@sourceware.org \ --to=redi@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ --cc=libstdc++-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).