는 [현대 효과적인 C는 ++] 말한다 : 템플릿 인스턴스화, T의 종류를 알고해야 할 때, 여기있는 동안 {1,2,3}이 보강-초기화 목록을하기 때문에반환 값을 추론 할 때 "auto"가 braced-init-list를 허용하지 않는 이유는 무엇입니까?
template<class T>
void f(T t){}
int main(){
f({1,2,3});
}
는, 컴파일을 실패합니다. 다음 내 질문에 내가 이것을 이해할 수
auto x={1,2,3};//auto deduces x to std::initializer_list
f(x);
만 : 같은 해결해야 책이 반환 값 공제 "자동"을 사용할 때, 말을 계속하는 이유
을, 그것을 받아 보강-초기화를 추론 할 수 없습니다 -명부?
auto f()
{
return {1,2,3};
}
컴파일에 실패합니다.
이 C++ 14 표준의 일부인 경우이 같은 제한의 그리고 말을 계속하는 이유 Emmmmm는 이해가 안 돼요? "NEWVALUE"전에
auto resetV=[&v](const auto& newValue){v=new Value;}
"자동"을 할 수 없습니다 {1,2,3}도 수락하십시오. 왜 우리는 그런 2 가지 제한이 있습니까?
어쩌면 언어 디자인 관점에서 생각해 보면 형식 공제를 수행 할 때 약간의 혼란이있을 것입니다. 그냥 추측. 이러한 디자인 결정의 단서가 있습니까? 며칠 동안 나를 혼란스럽게 만들었습니다.
감사합니다.
"잠재적으로"뿐만 아니라. 그 배열은 당신이 함수를 빠져 나가 자마자 전 배열이다. –
반환 유형은 initializer_list 객체의 복사본입니다. 그렇다면 왜 이것이 사전 배열입니까? 감사 –