auto
키워드는 코드를 단순화하기 위해 도입되었습니다. 특히 stl 컨테이너를 반복 할 때마다 루프를 반복 할 때마다 구문이 엉망인 std::vector<MyType>::iterator
구문을 사용하지 않아도보다 쉽고 멋지게되었습니다. 그러나 정확히 동일한 일을 수행 할 auto
을 사용하지 않고 코드를 작성할 수있었습니다.'자동'없이는 사용할 수없는 기능 (특히 구조화 된 바인딩)이 있습니까?
std::tuple<int, int&> f();
auto [x, y] = f();
그래서, 두 가지 질문 :
- 내가 할 수있는 방법이 없다는 것을 수정 있습니까
는 이제 특정 구조화 된 바인딩에
auto
없이 특정 기능을 사용할 수 없습니다 (내 생각) (아직 구조화 된 바인딩 사용)을 사용하지 않고[x, y]
을 초기화 하시겠습니까? 명시 적으로 초기화하는 방법이 있습니까 :*explicit_type* [x, y] = f();
? auto
을 사용해야하는 다른 기능은 무엇입니까?
글쎄, 항상 ['std :: tie'] (http://en.cppreference.com/w/cpp/utility/tuple/tie)는 고려해야합니다 ...하지만 일대일 방식이 아닙니다 예 : 그것은 표현이고 선언이 아닙니다. ... –
여기에 정확하게 필요하지는 않지만'std :: map :: insert_return_type i = m.insert (...);와 같이 명시적인 타입이 도움이되지 않는 곳이 있습니다. –
milleniumbug
2 : 당신은 일반 람다를 계산 했습니까? ... –