전달 참조 (이전에는 Scott Meyers의 Universal References)에 대한 기본 인수를 지정하는 방법을 파악하는 데 문제가 있습니다. struct encoder_t {
} const encoder = {};
struct validator_t {
} const validator = {};
struct test {
t
이 코드 고려 붕괴 참조 : 난 아직도 앞으로 호출 할 필요가 왜 template<typename T>
void foo(T&& param){ //In this case && is called universal reference
std:string tmp = std::forward<string>(param);
}
내 질문은 보편적 참조 유형
Scott의 마지막 마스터 피스에서 C++ 11 및 14에 대한 범용 참조를 읽었습니다. lvalue 또는 rvalue 유형에 할당 된 인수에도 불구하고 참조 매개 변수에는 전달 된 인수의 유형 특성에 따라 l/r 값으로 추론 할 수있는 호출 된 범용 참조 사이에 무언가가 있습니다. template<typename T>
void f(T&& param);
C++ 17에서는 instantiate objects without specifying the template types이 가능합니다. 기본적으로,이 코드는 컴파일 것 : std::pair p(2, 4.5); // deduces to std::pair<int, double> p(2, 4.5);
std::tuple t(4, 3, 2.5); // same