다음과 같은 템플릿이 있습니다
template <typename T> class Foo
{
public:
Foo(const T& t) : _t(t) {}
private:
const T _t;
};
인수 유형이 부울 또는 문자와 같이 사소한 경우 const 참조를 사용하지 않는 정통한 템플릿 메타 프로그래밍 방법이 있습니까? 처럼:
Foo(stl::smarter_argument<T>::type t) : _t(t) {}
1
함수가 작 으면 컴파일러가 인라인하고 참조가 존재하지 않을 것이므로 걱정하지 않아도됩니다. 함수가 크면 정수를 참조로 래핑하는 데 드는 작은 비용은 중요하지 않습니다.
—
Alan Birtles
작은 데이터 형식에 대한 참조를 피하고 완벽한 전달에 대해 더 걱정할 것입니다. r 값 참조로 전달하는 것이 대부분의 경우 값으로 전달되도록 최적화 될 수 있다고 생각합니다.
—
슈퍼
답변에서 지적하지 않은 점을 명심하십시오. 당신이하는 일이 암묵적 추론 가이드를 물리 칠 것입니다. 클래스 템플릿 인수 공제 작업에 관심이있는 경우 명시 적 공제 안내서를 작성해야합니다
—
브라이언
Foo.