using ObjectID = size_t; class Component; template<typename TComponent> Component* GetComponent(const ObjectID&); template<typename TComponent> class ComponentManager { friend Component* GetComponent<TComponent>(const ObjectID&); private: int a; }; template<typename TComponent> Component* GetComponent(const ObjectID& id) { ComponentManager<TComponent>* a = nullptr; a->a = 5; return nullptr; } class Component { public: virtual ~Component() = default; }; class CC: public Component { }; int main() { GetComponent<CC>(5); return 0; }

이제 저기서 friend 선언 지우면 컴파일 에러남