<aside> ๐ก
cpp17
New Language Features
๊ฐ๊ฒฐํ ์ค์ฒฉ16์ง์ ๋ถ๋์์์ : 0x์ญ์ก์ง์.์ญ์ก์ง์p์ด์์น์[[fallthrough]][[nodiscard]][[maybe_unused]]__has_include(<ํ์ผ๋ช
>)constexpr ifshared_ptr<[]> ๋ฐฐ์ดํ ๋นstd::byte๊ตฌ์กฐ์ ๋ฐ์ธ๋ฉ์กฐ๊ฑด๋ฌธ ์ด๋์
๋ผ์ด์ ์ง์์ง์ ์ด๊ธฐํ๋ฆฌ์คํธ ์ถ๋ก ์, ๋จ์ผ ์์๋ง ํ์ฉCTAD (class template argument deduction)
โ ์์ฑ์์ ๋ํ ๋งค๊ฐ๋ณ์ ์ถ๋ก -> ์์ฑ์<T> ์๋ต๊ฐ๋ฅstatic ๋งด๋ฒ๋ณ์์ ์์คํ์ผ์์์ ํ ๋น (์ธ๋ผ์ธ๋ณ์)throw๋ฆฌ์คํธ ์ง์ ์ค๋จ (์ต์
์
๋ช
์ธ)ํด๋ฉํํ์ 4์ข
์ง์New Library Features
.data()๊ฐ๋ : const char* | const std::string& | Lโ(~~)โ๋ฅผ ๋ชจ๋ ๋์ํ๊ธฐ ์ํ ์ธ๋ จ๋ ๋ฐฉ๋ฒ
ํ์ค๋ฆฌํฐ๋ด (๊ณต์๋ฌธ๋ฒ, ์ ์๋ช ์นญ: ํ์ค์ฌ์ฉ์์ ์๋ฆฌํฐ๋ด)
using namespace std::string_view_literals;
// ํน์
using namespace std;
std::string_view example = โ์ฌ๊ธฐ์ ์ด ๋ด์ฉ์ ์คํธ๋ง๋ทฐ ์ฒ๋ฆฌโsv;
.remove_prefix(size_t n)
โ string_view์ ๋ฌธ์์ด์ย ์๋ถ๋ถ n๊ธ์๋ฅผ ์๋ฆ, ๋ด๋ถํฌ์ธํฐ ๊ธธ์ด๋ง ๋ณ๊ฒฝ
.remove_suffix(size_t n)
โ string_view์ ๋ฌธ์์ด์ย ๋ท๋ถ๋ถ n๊ธ์๋ฅผ ์๋ฆ, ๋ด๋ถํฌ์ธํฐ ๊ธธ์ด๋ง ๋ณ๊ฒฝ
std::from_chars_result
โ std::errc()from_chars(...3 + 1) : (const char* pStt, const char* pEnd, T& val, int NumSys = 10)to_chars(...3 + 1 ~ 2) : (char* pStt, char* pEnd, int NumSys = 10, T& val, chars_format eFlag = std::chars_format::general, int presicion /*์ ๋ฐ๋์๋ ์ค๋ฒ๋ก๋ ์กด์ฌ*/)std::size(c), std::empty(c), std::data(c) ์ ์ญํจ์std::invoke()std::destroy_at()std::destroy()std::uninitialized_move()std::uninitialized_move_n()std::uninitialized_default_construct()std::uninitialized_default_construct_n()std::uninitialized_value_construct()std::uninitialized_value_construct_n()std::pmr::memory_resourcestd::pmr::polymorphic_allocator<T>std::pmr::vector, std::pmr::string ๋ฑstd::scoped_lockstd::invoke(std::function, ...)search() ์ ์ฉ ํ์ ์๊ณ ๋ฆฌ์ฆ ๋งค๊ฐ๋ณ์์ถ๊ฐstd::make_from_tuple() โ ํํ๋ก ๊ฐ์ฒด์์ฑ ์ฉ๋std::apply() โ ํํ๋ก ํจ์์คํ ์ฉ๋std::nulloptstd::optional<T>()std::optional<T>(T)operator bool()has_value()value()value_or(default)operator*,ย operator->emplace(args...)reset()swap(optional&)