IT이야기

템플릿 구조/클래스를 친구로 선언하는 방법

cyworld 2021. 9. 23. 22:42
반응형

템플릿 구조/클래스를 친구로 선언하는 방법은 무엇입니까?


다음을 수행하고 싶습니다.

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

private:
    // ...
};

하지만 내 컴파일러(VC8)가 질식합니다.

error C3857: 'foo<T>': multiple template parameter lists are not allowed

나는 가능한 모든 인스턴스화 가지고 싶은 template struct foo친구 foo<T>모두를 T.

이 작업을 수행하려면 어떻게 해야 합니까?

편집: 이것은

template <typename T>
struct foo
{
    template <typename>
    friend struct foo;

private:
    // ...
};

컴파일된 것 같지만 맞습니까? 친구와 템플릿에는 매우 부자연스러운 구문이 있습니다.


template<typename> friend class foo

그러나 이것은 모든 템플릿을 서로 친구로 만듭니다. 하지만 이것이 당신이 원하는 것이라고 생각합니까?

ReferenceURL : https://stackoverflow.com/questions/3292795/how-to-declare-a-templated-struct-class-as-a-friend

반응형