class base {
public:
    virtual int foo(int a)
     { return 4 + a; }
    virtual int bar(int a) final
     { return a - 2; }
};

class sub final : public base {
public:
    virtual int foo(int a) override
     { return 8 + 2 * a; };
    virtual int bar(int a)
     { return a; }
};

class impossible : public sub { };

int main(void)
{
    base b;
    sub s;

    return 1;
}