#include <cstdio>		// for printf.

template<typename T>
struct b
{
	virtual auto f() -> void
	{
		std::printf("b::f()\n");
	}
};

template<typename T>
struct d1 : b<T>
{
	auto test() && -> void
	{
		this->f();
		this->b<T>::f();
	}
};

template<typename T>
struct dd : d1<T>
{
	virtual auto f() -> void override
	{
		std::printf("dd::f()\n");
	}
};

auto main() -> int
{
	dd<void>{}.test();
}
