"템플릿 클래스의 친구 템플릿 함수를 선언 외부에 정의하는 방법"(SO/cppreference)이 발견되었지만, 믹스에 내부 템플릿이 아닌 다른 클래스를 추가하는 방법은 무엇입니까?두 클래스 외부의 템플릿 클래스 내부의 비 템플릿 클래스에서 선언 된 friend 함수를 정의하는 방법은 무엇입니까?
e.e. (외부) operator<<
다음 예제에서 class Internal
선언을 정의하는 방법 :
#include <iostream>
template <typename T>
class External {
public:
explicit External(T initial) : value{initial} {}
class Internal {
public:
Internal(const External& e) : internal_value{e.value} {}
private:
friend std::ostream& operator<<(std::ostream& os, const Internal& i);
// ^^^ this one
/* body
{
return os << i.internal_value;
}
*/
T internal_value;
};
friend std::ostream& operator<<(std::ostream& os, const External& e)
{
return os << Internal{e};
}
private:
T value;
};
int main()
{
std::cout << External<int>{5};
}
를하십시오 유지 보수 방식으로 그 작업을 수행하는 방법은 (템플릿 파라미터에 종속 된 ) 멤버 함수 위임 대신이 작업을하는 작업자 정의를 인라인 유지하는 @StoryTeller 조회 규칙은 무엇입니까? –
@RichardHodges - 너도 알다시피, 나는 더 이상 확신하지 못한다. 내 조회 규칙을 혼동시킬 수 있습니다. ADL에서만 발견 할 수있는 OP의 인라인 기능입니다. – StoryTeller
누가 이것을 너무 광범위하게 투표 했습니까 ...? –