The following class (with virtual destructor) contains a templated operator delete:
struct S
{
virtual ~S() {}
template <typename... Args>
void operator delete(void* ptr, Args... args);
};
args can be empty, so I think S::operator delete can also be used when a usual delete is expected.
However (using g++), I get an error:
error: no suitable 'operator delete' for 'S'
Couldn't the "suitable 'operator delete'" be a template?