두 인터페이스가 동일한 기능을 갖고 싶습니다. 구현이 둘 다 동일하고 동일한 기능을 2 개의 오버로드 된 시그니처에 구현했기 때문에 실제로 원하는 것은 아닙니다. 기본적으로템플릿 T와 T & 같은 구현에서
#include <iostream>
#include <vector>
template <typename T>
void foo(T&) {} // I have to write the same things here ...
template <typename T>
void foo(T) {} // ... and here
int main() {
foo(std::vector<int>()); // call only for T
std::vector<int> v;
foo(v); // ambiguos call but I only need 1 implementation
return (0);
}
내가 주요 문제는 같은 구현을 유지하고 단지 서명을 과부하 또는 제거되기 때문에 단서가 없다 1.
에이 개 템플릿 기능을이 상황을 해결하고 융합 싶습니다 템플릿 사용.
구현에 차이가 없다면 - 인수를 값으로 사용하는 오버로드를 제공하는 이유는 무엇입니까? – arne
@arne은 – user2485710
@ user2485710의 첫 번째 호출을 살펴 봅니다. rvalue-references를 사용하지 않는 이유는 무엇입니까? – ForEveR