auto and var

var in C#

var i = 30; // μ•”μ‹œμ  νƒ€μž… μ„ μ–Έ
  • C#μ—μ„œμ˜ var ν‚€μ›Œλ“œλŠ” 지역 λ³€μˆ˜μ— ν•œν•΄μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€

auto in C++

  • C++μ—μ„œμ˜ autoλŠ” λ³€μˆ˜μ˜ νƒ€μž…μ„ μΆ”μ •ν•  뿐만 μ•„λ‹ˆλΌ, μΌλ°˜ν•¨μˆ˜μ™€ νƒ¬ν”Œλ¦Ώ ν•¨μˆ˜μ˜ λ°˜ν™˜ 값도 μΆ”μ •ν•  수 μžˆλ‹€
auto i = 10;

auto foo() { //deduced to be int
    return 5;
}

template<typename T, typename U>
auto add(T t, U u) {
    return t + u;
}

퍼포먼슀 이슈?

  • C++ auto λ³€μˆ˜λ„ 컴파일 νƒ€μž„μ— νƒ€μž…μ„ μ •μ˜(stripped)ν•˜κΈ° λ•Œλ¬Έμ— νΌν¬λ¨ΌμŠ€μ— λ³„λ„μ˜ 영ν–₯은 μ—†λ‹€
  • C#의 var μ—­μ‹œ IL둜 μ»΄νŒŒμΌν•˜λŠ” κ³Όμ •μ—μ„œ 읡λͺ… νƒ€μž…μ„ μ²˜λ¦¬ν•˜λŠ” 것과 같은 좔가적인 결과물이 μ—†μœΌλ―€λ‘œ, 별 영ν–₯이 μ—†λ‹€
    • μ• μ΄ˆμ— IL 컴파일이 λΆˆκ°€λŠ₯ν•œ μ½”λ“œλΌλ©΄ 컴파일 μ—λŸ¬κ°€ λ°œμƒν–ˆμ„ 것이닀

좜처