```cpp
#include <iostream>
template<typename Derived>
struct Base {
void interface() {
static_cast<Derived*>(this)->implementation();
}
void implementation() { std::cout << "Base"; }
};
struct Child : Base<Child> {
void implementation() { std::cout << "Child"; }
};
int main() {
Child c;
