On 10/25/22 09:14, Marek Polacek wrote:
On Tue, Oct 25, 2022 at 12:34:50PM +0100, Jonathan Wakely wrote:
On Mon, 24 Oct 2022 at 18:30, Jason Merrill wrote:

On 10/21/22 19:28, Marek Polacek wrote:
When testing a previous version of the patch, there were many FAILs in
libstdc++'s 22_locale/; all of them because the warning triggered on

    const test_type& obj = std::use_facet<test_type>(std::locale());

but this code looks valid -- std::use_facet doesn't return a reference
to its parameter.  Therefore I added code to suppress the warning when
the call is std::use_facet.  Now 22_locale/* pass even with the warning
on.  We could exclude more std:: functions like this if desirable.

Instead of adding special cases in the compiler, let's disable the
warning around the definition of use_facet (and adjust the compiler as
needed so that avoids the warning).

I assume you mean using #pragma here. If we disable it around the
definition of use_facet, will that disable it for callers of
use_facet, or only within the definition of use_facet itself?

Right, a #pragma will not help, it would only disable the warning
within the definition of use_facet itself.

That's why I mentioned adjusting the compiler, i.e. check warning_enabled_at (DECL_SOURCE_LOCATION (fn)

Jason

Reply via email to