#include <iostream>
#include <string>

std::string foo() noexcept {
	return "foo_free_function";
}

template<typename T>
class Base {
	public:
	std::string foo() const noexcept {
		return "foo_Base_function";
	}
};

template<typename T>
class Derived final : public Base<T> {
	public:
	std::string bar() const noexcept {
		return foo();
	}
};

int main() {
	Derived<int> d;
	std::cout << d.bar() << std::endl;
	return 0;
}