Этот код действительно работает:
class Abstract {
virtual auto foo() -> int = 0;
};
class Concrete: public Abstract {
int foo() { cout << "blah!" << endl; return 1; }
} instance;
Я понимаю, что функция становится искаженной и привязана к одной и той же сигнатуре функции, но является ли это смешение фактически законным в С++ 14?