๋ ํด๋์ C++ ๊ฐ๋ฐ์์ด๊ณ C++ ์ ๋์์ง 10๋ ์ด ๋์์...
์ธ๋ฆฌ์ผ ์์ง์ผ๋ก ๊ฐ์ํ๊น ํด์ ๋ชจ๋ C++ 17 ๋ฒ์ ์คํ ๋ดค์.
- <string_view>ย ์ ์ ์ธ ๋ฌธ์์ด ํด๋์ค
- <optional>ย ์ ๋ฌํ๋ ๊ฐ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ ํ์ ์ผ๋ก ๊ฒฐ์ ํ ์ ์๋ ํด๋์ค
- <filesystem>ย ํ์ผ ์์คํ ์ง์
- <execution>ย ๋ณ๋ ฌย STLย ์๊ณ ๋ฆฌ์ฆ
- <variant>ย ํ์ ์์ ํ ๊ฒฐํฉ์ฒด (union)
- ํ ํ๋ฆฟ ์ธ์ ์ถ๋กtemplate<typename T> class Aaa {}; template<typename T> Aaa(T) -> Aaa<T>;์ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ํ ํ๋ฆฟ์ ์ถ๋ก ๋ฐฉ๋ฒ์ ์ง์ ๋ช ์ํ ์ ์์. ๊ฐ๋ นย std::vector v{1, 2, 3};์ ๊ฒฝ์ฐ v๋ย std::vector<int>๋ก ์ฐ์ญ๋จ.
- ๊ตฌ์กฐ์ ๋ฐ์ธ๋ฉ: ํํ ๋๋ ์งํฉ ๊ตฌ์กฐ์ฒด๋ฅผ ํ์ด์ฐ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํจ. ๊ฐ๋ นย auto [a, b, c] = std::tuple(4, 5, 6);์์ย a๋ 4,ย b๋ 5,ย c๋ 6์ด ๋จ
- ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ฑ์์ ๋ฐ๋ก ๊ฐ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ์๋, ํด๋น ํด๋์ค์ ์ด๋ ์์ฑ์๊ฐ ์กด์ฌํ๋ค๋ฉดย ์์ํ R-Value๊ฐ ๋์ด ๋ง์น ์กด์ฌํ์ง ์์ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌ๋จ. ์๋ฅผ ๋ค์ด ์ด๋ ์์ฑ์๊ฐ ์๋ ํด๋์ค A๋ฅผ ์์ฑํ ๋ย A aaa{A{}};์์ ์์ชฝ์ย A{}๋ ์ฝ๋ ์์๋ง ๋ณด์ด๊ณ ์คํ ์์ ์๋ ๋ณด์ด์ง ์๋ ์กด์ฌ๊ฐ ๋จ
- noexceptย ์์ฑ์ด ํจ์์ ์๋ฃํ์ ํฌํจ๋จ. ํจ์ ํฌ์ธํฐ, ๋๋ค ํํ์, ํจ์ ๊ฐ์ฒด์์ย noexcept๋ฅผ ๋ช ์ํ ๊ฒ๊ณผ ํ์ง ์์ ๊ฒ์ด ๋ค๋ฅธ ํจ์๋ก ์ทจ๊ธ๋จ
- ๋๋ค ํํ์์ ๋ฌธ๋งฅ ์บก์ฒ ๋ถ๋ถ์ย this๋ฅผ ์ฌ์ฉํ ์ ์์. ์ด๋ฅผ ํตํด ์์ ์ ๋ฉ์๋, ํ๋๋ง ์บก์ฒํ ์๋ ์์
- constexprย ๋๋ค ํํ์
- if constexprย if๋ฌธ๊ณผ ์ฌ์ฉ๋ฒ์ ๊ฐ์ง๋ง, ํ๊ฐ๋๊ณ ์คํ๋๋ ๋ด์ฉ์ ์ปดํ์ผ ์์ ์ ์ฆ์ ๊ฒฐ์ ๋จ. ์คํ๋์ง ์๋ ์ชฝ์ ์์ ์ฝ๋์์ ์ ๊ฑฐ๋จ. ์ด๋ฅผ ์ด์ฉํด ์ค๋ฒ๋ก๋ฉ ์์ด ์์ ๋ค๋ฅธ ์๋ฃํ์ ๋ฐํํ๋ ํจ์๋ฅผ ๋ง๋ค ์ ์์
- inline์ ๋ณ์ ์ ์ธ์ ์ฌ์ฉํ ์ ์์.ย static inlineย ํ๋๋ ์ ์ธ ์ฆ์ ๊ฐ์ ํ ๋นํ ์ ์์. ์ด๋ค ์ด๋ฆ๊ณต๊ฐ ์์ ์๋ย inline constexprย ๋ณ์๋ย staticย ๋ณ์์ฒ๋ผ ์ค๋ณต ์ ์ธ์ด ์ผ์ด๋์ง ์์ผ๋ฉฐ ํญ์ ๋จ์ผํ๊ฒ ์กด์ฌํ๋ ์ด๋ฆ์ด ๋จ. ํ ํ๋ฆฟย inline constexprย ๋ณ์๋ ๋ฆ๊ฒ ํ๊ฐ๋๋ฉฐ ์ปดํ์ผ ์์ ์ ๊ฐ์ด ๊ทธ๋๋ก ๋์ ๋จ. ๊ทธ๋ฆฌ๊ณ ย static constexpr์ ๊ฒฝ์ฐ ์๋์ผ๋กย static inline constexpr๋ก ์ฐ์ญ๋จ
- ์ค์ฒฉ๋๋ ์ด๋ฆ๊ณต๊ฐ์ย namespace ns1::ns2 { ...;ย }์ ๊ฐ์ด ๋ฐ๋ก ์ ์ธํ ์ ์์
- ์ด๋ฆ์๋ ๋งค๊ฐ ๋ณ์๊ฐ ๊ฐ๋ฅํด์ง. ํจ์์ย std::in_place,ย std::in_place_type<T>ย ๊ฐ์ ๋ฉํ ์ธ์๋ฅผ ์ ๋ฌํ ๋ ์ ์ฉํจ
- Enum en{ value };๊ณผ ๊ฐ์ด ์ด๊ฑฐํ์ ์์ฑ, ๋์ ์ ํ๋ณํ ์์ด ๋ฐ๋ก ํ ์ ์์. ์ด๋ย enum class์๋ ์ ์ฉ๋จ
- enum class std::byte
- ๋ฒ๊ฑฐ๋กญ๊ฒย alignas๋ฅผ ํด๋์ค์ ๋ถ์ผ ํ์ ์์ดย std::aligned_alloc๋ก ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ ๋ ฌ๊ณผ ๋์์ ํ ๋น์ด ๊ฐ๋ฅํด์ง
- constexpr std::array
- ์๋ก์ด ํน์ฑย [[fallthrough]]
- ์๋ก์ด ํน์ฑย [[maybe_unused]]
- ์๋ก์ด ํน์ฑย [[nodiscard]],ย [[nodiscard(message)]]
*์ถ์ฒ: ๊บผ๋ผ์ํค
๋ญ ์์ฆ ์ ํํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค ํน์ง ์ ๊ฐ์ ธ์ค๊ธด ํ๋๋ฐ.... ๊ทธ๋ฅ ์๋ฐ ๋๋ฌด ๋์ํ๋ค.
์... ์ ์ใ
์ธ๋ฆฌ์ผ์ ์ฌ์ค์ ๋งคํฌ๋ก๋ก์น ์ด๋ผ ๋ณ์๊ด์์ด
๋ชจ๋c++๋ ๊ทธ.... ๋ ํ๋์ ๋ค๋ฅธ ์ธ์ด์
์ฐจ๋ผ๋ฆฌ ์์ ์๋ก์ด ์ธ์ด๋ฉด ๋ ธ๋ฒ ์ด์ค๋ถํฐ ์ฑ๊ธ๋ฒ๊ธํ๋ฉด์ ๋ฐฐ์ฐ๊ฒ ๋๋ฐ, ์ด๊ฑด ์๋ฐ... ๊ธฐ์กด์ ์๋ ๊ฑฐ์์ ์๋ก ์์ผ๋ ค๋๊น ์ด๋๋ถํฐ ์๋์ผ ํ ์ง ๊ฐ์ด ์ ์กํ.
์ฒ ํ์ด ์๋๊ฒ ์ฒ ํ์ธ ์ธ์ด
๋ง์ ํด๋ณด๋ฉด ์ด๋ฏธ ํจ์ ๋ก์น ๋์ด์์ด์ ํ๊ธฐ ์ฌ์
expression ๋ฌธ๋ฒ๋ถํฐ ํจ์๋ง๊ณ ์๋ก์ด๊ฒํฌ์ฑ์ด์ธ๋์ผ
๊ด์ฐฎ์ ์ด์ฐจํผ ์ด๋ฏธ ์ ๋ํฐ์์ vector location rotation ๋ง์ ธ๋ดค์ํ ๋ฐ, ์ด๋ฏธ ๊ทธ๊ฑฐ ๊ตฌํ๋ ํจ์๋ ์ธ๋ฆฌ์ผ๋ ๋ค ๋๊ฐ์ด ๊ตฌํด์ ธ์๊ณ , ํด๋์ค๊ฐ์ ๋๊ธฐ๋ ์ง์ ์ ์ธํฐํ์ด์ค ์ด์ฉํ๊ฑฐ๋ ์ฐธ์กฐ ์ด์ฉ๋ง ํด๋ ์ถฉ๋ถํ ๊ฐ๋ฅํจ. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฐ ๋ฌธ๋ฒ๋ค๋ ์ตํ๋ฉด ์ข๊ธดํ๋ฐ, ์ค์ ์กด๋ ํ๊ธฐ์ ์ธ ์์คํ ๋ง๋๋๊ฑฐ์๋๋ฉด ๊ธฐ์กด์ ํจ์์กฐํฉ์ผ๋ก๋ ์ถฉ๋ถํ ๊ตฌํ๊ฐ๋ฅํจ..
์ง์ง ๊ตฌ๋ผ์์น๊ณ ํ๋ฒ ๋ง์ ธ๋ณด์ ์ง์ง ๋ค์ดํฐ๋ธ c++๋ณด๋ค ์๋์ ์ผ๋ก ์ฌ์
์๋ ์๋งจํฑ ์์ฒด๊ฐ ์๋ก์๊ฒจ๋๊ฑฐ ํฌ์ฑ์ด๋ผ ๋์ ์๋ค์ด์จ๋ค ์ด๋ง์ด์... ์ฝ๋ก ๊ณผ ๊บพ์ ๊ฐ ํ๋ํ๊ฒ ๋ ์๋ค๋๋๋ฐ
๋น์ฐํ ์ด๋ฏธ ์ฐ๋์ํฉ์์ crt๊ฐ๋ค์ฐ๋๊ธ์ด๋ ๊ธฐ๋ฅ์ฐ๊ธฐ๋ ์ฝ์ง
๊ทผ๋ฐ ๋ค์ ๋ฐฐ์๋๊ฐ๋๊ฒ ์ง์ง ์ด๋ ค์ด๊ฒ ๋ง๊ธดํด...
๋ชจ๋ 17, 20 ์ด์ฐจํผ ์ฐ๋ ๊ธฐ๋ฅ ํ๋๋ฐ์ ์์ ๋๋ถ๋ถ ๋ชฐ๋ผ๋ ๋จ
์ด๊ฒํ์ค ๋ง๋ฐ ใ ใ ใ ใ ใ
๋ ๊ฑ ์ ๋ํฐ ์จ๋ผ ใ ใ