Quick Q: Syntax of final, override, const with trailing return types
Quick A: The signature of the function is first.
Recently on SO:
Syntax of final, override, const with trailing return types
The correct syntax should be:
- override and final should appear after the member function declaration, which including the trailing return type specification, i.e.
auto debug(ostream& os=cout) const ->ostream& override final;
- override and final should not be used with the member function definition outside the class definition, so just remove them:
auto Derived::debug(ostream& os) const ->ostream& { os << "dval: " << dval << endl; return os; }