#pragma once struct Tag {}; template <typename T> class Base { public: virtual void func() = 0; }; Base<Tag> bar();