view gcc/testsuite/g++.dg/warn/Wreturn-type-4.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
line wrap: on
line source

/* PR c++/18313 */
/* { dg-do compile } */
/* { dg-options "-Wignored-qualifiers" } */

volatile void bar(); /* { dg-warning "type qualifiers ignored" } */
// { dg-warning ".volatile.-qualified return type is deprecated" "" { target c++2a } .-1 }

struct A
{
    const int bla(); /* { dg-warning "type qualifiers ignored" } */
    static const A getA(); /* { dg-bogus "type qualifiers" } */
};

template<typename T> const T getfoo(const T def) /* { dg-bogus "type qualifiers ignored" } */
{ return def; } 

template<typename T> class Pair
{
    public:
        T getLeft() const { return T(); }   /* { dg-bogus "type qualifiers ignored" } */
        const T getRight() const { return T(); } /* { dg-bogus "type qualifiers ignored" } */
};

template <typename T> struct S {
    const int f();                     /* { dg-warning "type qualifiers ignored" } */
    const T g();                       /* { dg-bogus "type qualifiers ignored" } */
    T h();
};

int* testtemplate()
{
    int i;

    Pair<const int> a;

    a.getLeft();
    a.getRight();

    S<bool> b;
    b.h();              /* { dg-bogus "type qualifiers ignored" } */
    b.g();              /* { dg-bogus "type qualifiers ignored" } */

    return getfoo<int*>(&i);
}