다음 코드 C++에서 오버로드 연산자() 나를 위해 작동 :회원 기능 템플릿과
class Foo {
public:
template <class T> T& get() { ... }
};
Foo foo;
foo.get<int>() = ...;
을하지만, 다음 코드는 나를 위해 작동하지 않습니다
class Foo {
public:
template <class T> T& operator()() { ... }
};
Foo foo;
foo<int>() = ...;
오류를 인 :
expected primary-expression before '>' token
expected primary expression before ')' token
두 오류는 foo<int>()
왜 이것이 작동하지 않으며이를 해결할 수 있습니까? 명시 적으로 템플릿 인수를 지정해야하는 경우
'operator()'템플릿은 인스턴스화가 반환 값에 대해서만 과부하가되기 때문에 꽤 쓸모가 없습니다. 'get' 등의 이름을 사용하십시오. – aschepler
사용할 수 없습니다 (바람직하지 않을 수도 있음). 아래 답변을 참조하십시오. –
왜 클래스 전체가 아니라 함수를 templatize하고 있습니까? –