#!if 문서명2 != null
, [[라이브러리]]#!if 문서명3 != null
, [[]]#!if 문서명4 != null
, [[]]#!if 문서명5 != null
, [[]]#!if 문서명6 != null
, [[]]1. 개요
||<-12><tablewidth=80%><tablebordercolor=#20b580><tablebgcolor=#090f0a,#050b09><tablecolor=#a8a8a8,#c1c1c1><rowcolor=#d7d7d7,#a1a1a1>
<optional> ||| <bgcolor=#20b580> | |||||||||||
| |||||||||||
| 클래스 설명1. | |||||||||||
| <bgcolor=#20b580> | |||||||||||
| C++23 | ||||||||||
| 설명2. | |||||||||||
| <bgcolor=#20b580> | |||||||||||
<optional>2. 포함된 기능
||||<tablewidth=80%><tablebordercolor=#20b580><tablebgcolor=#090f0a,#050b09><tablecolor=#a8a8a8,#c1c1c1><rowcolor=#d7d7d7,#a1a1a1>
||
#!if attribute != null
[[C++/문법/특성|{{{#a8a8a8 {{{[[]]}}}}}}]]{{{ }}}#!if attribute_lnk != null
[[C++/문법/특성#|{{{#a8a8a8 {{{[[]]}}}}}}]]{{{ }}}#!if head_keyword != null
##======================================= include and import
'''{{{#569cd6 {{{class}}}}}}'''#!if import != null
'''{{{#569cd6 {{{import}}}}}}'''{{{#c8865e {{{ <>}}}}}}{{{;}}}#!if include != null
{{{#include }}}#!if (template_available = (template_p0 != null || template_v0 != null || template_p1 != null || template_v1 != null || template_p2 != null || template_v2 != null || template_p3 != null || template_v3 != null)) || template_last_label != null
##======================================= template parameter 0
##======================================= template parameter 0 concept
{{{<}}}{{{#!if template_concept0_available = (template_cpt0 != null)
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if template_concept0_p0 != null || template_concept0_v0 != null || template_concept0_last_label != null
{{{<}}}{{{#!if template_concept0_p0 != null
{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept0_v0 != null
{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept0_p1 != null
{{{, }}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept0_v1 != null
{{{, }}}{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept0_p2 != null
{{{, }}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept0_v2 != null
{{{, }}}{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept0_last_label != null
{{{}}}}}}{{{>}}}}}}{{{ }}}}}}{{{#!if template_p0 != null
{{{#!if !template_concept0_available
'''{{{#569cd6 {{{typename}}}}}}'''}}}{{{#!if template_p0_post != null
{{{}}}}}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_v0 != null
{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if template_p0_post != null
{{{}}}}}}{{{#ffffff '''{{{}}}'''}}}}}}{{{#!if template_p1 != null || template_v1 != null
##======================================= template parameter 1
{{{, }}}}}}{{{#!if template_concept1_available = (template_cpt1 != null)
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if template_concept1_p0 != null || template_concept1_v0 != null || template_concept1_last_label != null
{{{<}}}{{{#!if template_concept1_p0 != null
{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept1_v0 != null
{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept1_p1 != null
{{{, }}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept1_v1 != null
{{{, }}}{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept1_p2 != null
{{{, }}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept1_v2 != null
{{{, }}}{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept1_last_label != null
{{{}}}}}}{{{>}}}}}}{{{ }}}}}}{{{#!if template_p1 != null
{{{#!if !template_concept1_available
'''{{{#569cd6 {{{typename}}}}}}'''}}}{{{#!if template_p1_post != null
{{{}}}}}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_v1 != null
{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if template_p1_post != null
{{{}}}}}}{{{#ffffff '''{{{}}}'''}}}}}}{{{#!if template_p2 != null || template_v2 != null
##======================================= template parameter 2
{{{, }}}}}}{{{#!if template_concept2_available = (template_cpt2 != null)
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if template_concept2_p0 != null || template_concept2_v0 != null || template_concept2_last_label != null
{{{<}}}{{{#!if template_concept2_p0 != null
{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept2_v0 != null
{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept2_p1 != null
{{{, }}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept2_v1 != null
{{{, }}}{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept2_p2 != null
{{{, }}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_concept2_v2 != null
{{{, }}}{{{#ffffff {{{}}}}}}}}}{{{#!if template_concept2_last_label != null
{{{}}}}}}{{{>}}}}}}{{{ }}}}}}{{{#!if template_p2 != null
{{{#!if !template_concept2_available
'''{{{#569cd6 {{{typename}}}}}}'''}}}{{{#!if template_p2_post != null
{{{}}}}}}{{{#4ec9b0,#6fdbba {{{}}}}}}}}}{{{#!if template_v2 != null
{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if template_p2_post != null
{{{}}}}}}{{{#ffffff '''{{{}}}'''}}}}}}{{{#!if template_last_label == null
{{{>}}}}}}{{{#!if template_last_label != null
##======================================= template parameters end
{{{>}}}}}}#!if pre_available = (kw1 != null || kw1_post != null || kw2 != null || kw2_post != null || cls_attribute != null || cls_attribute_lnk != null || ns_end != null || pre1_t != null || pre2_t != null || pre_e != null)
#!if body_available = (body_number != null || body_string != null || body_v != null || body_gv != null || body_f != null || body_mv != null || body_mf != null || body_static_mv != null || body_static_mf != null || body_post != null)
#!if head_keyword != null && pre_available
{{{ }}}#!if fn_attribute != null
[[C++/문법/특성|{{{#a8a8a8 {{{[[]]}}}}}}]]{{{ }}}#!if fn_attribute_lnk != null
[[C++/문법/특성#|{{{#a8a8a8 {{{[[]]}}}}}}]]{{{ }}}#!if kw1 != null
'''{{{#CornFlowerBlue {{{contexpr}}}}}}'''{{{#!if kw1_post != null
{{{}}}}}}{{{#!if kw1_post == null && kw2 != null
{{{ }}}}}}#!if kw2 != null
'''{{{#CornFlowerBlue {{{long long}}}}}}'''{{{#!if kw2_post != null
{{{&&}}}}}}{{{#!if kw2_post == null && (cls_attribute != null || cls_attribute_lnk != null)
{{{ }}}}}}#!if cls_attribute != null
[[C++/문법/특성|{{{#a8a8a8 {{{[[]]}}}}}}]]#!if cls_attribute_lnk != null
[[C++/문법/특성#|{{{#a8a8a8 {{{[[]]}}}}}}]]#!if head_keyword != null && (cls_attribute != null || cls_attribute_lnk != null)
{{{ }}}#!if ns != null
'''{{{#58fafe {{{}}}}}}'''#!if ns1 != null
'''{{{#58fafe {{{std}}}}}}'''#!if ns2 != null
{{{::}}}'''{{{#58fafe {{{chrono}}}}}}'''#!if ns3 != null
{{{::}}}'''{{{#58fafe {{{chrono_literals}}}}}}'''#!if ns1 != null && ns_end == null
{{{::}}}#!if ns1 != null && ns_end != null
{{{}}}#!if pre1_t != null
{{{#4ec9b0,#6fdbba {{{optional}}}}}}#!if pre2_t != null
{{{::}}}{{{#4ec9b0,#6fdbba {{{duration}}}}}}#!if pre_e != null
{{{::}}}{{{#f0f068 {{{enum}}}}}}#!if pre_post != null
##======================================= body begin
{{{}}}#!if body_available && pre_available
{{{ }}}#!if body_number != null
{{{#b5cea8 {{{}}}}}}#!if body_string != null
{{{#c8865e {{{}}}}}}#!if body_v != null
{{{#a9a9b0,#a1a1a2 {{{}}}}}}#!if body_gv != null
{{{#ffa3d2 {{{}}}}}}#!if body_mv != null
{{{#ffffff {{{}}}}}}#!if body_f != null
{{{#f87a7a {{{}}}}}}#!if body_mf != null
{{{#f0a962 {{{}}}}}}#!if body_static_mv != null
{{{#ffffff '''{{{}}}'''}}}#!if body_static_mf != null
{{{#f0a962 '''{{{}}}'''}}}#!if body_post != null
{{{}}}#!if body_tmpopen != null
{{{<}}}#!if body_bopen != null
##======================================= arguments begin
{{{(}}}#!if (arg1_pre_available = arg1_concept != null || arg1_kw != null || arg1_t_kw != null || arg1_t != null)
#!if (arg2_pre_available = arg2_concept != null || arg2_kw != null || arg2_t_kw != null || arg2_t != null)
#!if (arg3_pre_available = arg3_concept != null || arg3_kw != null || arg3_t_kw != null || arg3_t != null)
#!if (arg4_pre_available = arg4_concept != null || arg4_kw != null || arg4_t_kw != null || arg4_t != null)
#!if arg1_concept != null
##======================================= argument 1
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if arg1_concept_tparam1 != null
{{{<}}}{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if arg1_concept_tparam2 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{#!if arg1_concept_tparam3 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{>}}}}}}{{{ }}}#!if arg1_kw != null
'''{{{#569cd6 {{{const}}}}}}'''#!if arg2_t_kw!=null
'''{{{#CornFlowerBlue {{{int}}}}}}'''#!if arg1_t!=null
{{{#4ec9b0,#6fdbba {{{}}}}}}#!if arg1_t_post!=null
{{{}}}#!if arg1_param != null
{{{#!if !arg1_pre_available
{{{#bcdce6 {{{}}}}}}}}}{{{#!if arg1_pre_available
{{{#bcdce6 {{{ }}}}}}}}}#!if (arg1_pre_available || arg1_param != null) && (arg2_pre_available || arg2_param != null)
{{{, }}}#!if arg2_concept!=null
##======================================= argument 2
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if arg2_concept_params != null
{{{<}}}{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if ar2_concept_tparam2 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{#!if arg2_concept_tparam3 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{>}}}}}}{{{ }}}#!if arg2_kw != null
'''{{{#569cd6 {{{const}}}}}}'''#!if arg2_t_kw!=null
'''{{{#CornFlowerBlue {{{int}}}}}}'''#!if arg2_t!=null
{{{#4ec9b0,#6fdbba {{{}}}}}}#!if arg2_t_post!=null
{{{}}}#!if arg2_param != null
{{{#!if !arg2_pre_available
{{{#bcdce6 {{{}}}}}}}}}{{{#!if arg2_pre_available
{{{#bcdce6 {{{ }}}}}}}}}#!if (arg2_pre_available || arg2_param != null) && (arg3_pre_available || arg3_param != null)
{{{, }}}#!if arg3_concept!=null
##======================================= argument 3
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if arg3_concept_params != null
{{{<}}}{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if arg3_concept_tparam2 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{#!if arg3_concept_tparam3 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{>}}}}}}{{{ }}}#!if arg3_kw != null
'''{{{#569cd6 {{{const}}}}}}'''#!if arg3_t_kw!=null
'''{{{#CornFlowerBlue {{{int}}}}}}'''#!if arg3_t!=null
{{{#4ec9b0,#6fdbba {{{}}}}}}#!if arg3_t_post!=null
{{{}}}#!if arg3_param != null
{{{#!if !arg3_pre_available
{{{#bcdce6 {{{}}}}}}}}}{{{#!if arg3_pre_available
{{{#bcdce6 {{{ }}}}}}}}}#!if (arg3_pre_available || arg3_param != null) && (arg4_pre_available || arg4_param != null)
{{{, }}}#!if arg4_concept!=null
##======================================= argument4
'''{{{#4ec9b0,#6fdbba {{{}}}}}}'''{{{#!if arg4_concept_params != null
{{{<}}}{{{#4ec9b0,#6fdbba {{{}}}}}}{{{#!if arg4_concept_tparam2 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{#!if arg4_concept_tparam3 != null
{{{#4ec9b0,#6fdbba {{{, }}}}}}}}}{{{>}}}}}}{{{ }}}#!if arg4_kw != null
'''{{{#569cd6 {{{const}}}}}}'''#!if arg4_t_kw!=null
'''{{{#CornFlowerBlue {{{int}}}}}}'''#!if arg4_t!=null
{{{#4ec9b0,#6fdbba {{{}}}}}}#!if arg4_t_post!=null
{{{}}}#!if arg4_param != null
{{{#!if !arg4_pre_available
{{{#bcdce6 {{{}}}}}}}}}{{{#!if arg4_pre_available
{{{#bcdce6 {{{ }}}}}}}}}#!if arg5_param != null
##======================================= argument5, argument6
{{{#bcdce6 {{{, }}}}}}#!if arg6_param != null
{{{#bcdce6 {{{, }}}}}}#!if arg_last_dots != null
{{{, ...}}}#!if body_bopen != null
##======================================= arguments end
{{{#!if body_spec1 != null
{{{) }}}}}}{{{#!if body_spec1 == null
{{{)}}}}}}#!if body_spec1 != null
##======================================= body end
##======================================= specifiers
'''{{{#569cd6 {{{const}}}}}}'''#!if body_spec1_paren != null
{{{(}}}#!if body_spec1_ref != null
{{{}}}#!if body_spec2 != null
{{{#!if body_spec1 != null && body_spec1_paren == null
{{{ }}}}}}'''{{{#569cd6 {{{noexcept}}}}}}'''#!if body_spec2_paren != null
{{{(}}}#!if body_spec2_label != null
{{{}}}#!if body_spec2_paren != null
{{{)}}}#!if body_spec1_paren != null
{{{)}}}#!if label_last != null
{{{}}}#!if body_tmpopen != null
##======================================= footer
{{{>}}}#!if last != null
{{{}}}||
| |||||||||||
| <bgcolor=#20b580> | |||||||||||
| |||||||||||
| 설명. | |||||||||||
| <bgcolor=#20b580> | |||||||||||
| C++11 | ||||||||||
| 설명. | |||||||||||
| <bgcolor=#20b580> | |||||||||||
| C++20 | ||||||||||
| 설명. | |||||||||||
| <bgcolor=#20b580> | |||||||||||
3. 설명
개론.#!syntax cpp
설명.- <C++ 예제 보기>
#!syntax cpp
4. 참고 사항
5. 외부 링크
- https://www.open-std.org/JTC1/SC22/WG21/에서 찾을 수 있는 제안서 링크
- https://en.cppreference.com/w/cpp/standard_library.html에서 찾을 수 있는 모듈 링크 및 Defect Report 링크
- CLang, GNUC, MSVC의 구현 링크
==# 코드 요약 #==
#!syntax cpp
#include <compare>
namespace std
{
// class template optional
template<class T> class optional;
// C++20
template<class T> constexpr bool ranges::enable_view<optional<T>> = true;
// C++20
template<class T> constexpr auto format_kind<optional<T>> = range_format::disabled;
// C++20
template<class T>
concept /*is-derived-from-optional*/ = requires(const T& t)
{ // exposition-only
[]<class U>(const optional<U>&) {}(t);
};
// no-value state indicator
struct nullopt_t
{
/* see description */
};
inline constexpr nullopt_t nullopt(/* unspecified */);
// class bad_optional_access
class bad_optional_access;
// relational operators
template<class T, class U>
constexpr bool operator==(const optional<T>&, const optional<U>&);
template<class T, class U>
constexpr bool operator!=(const optional<T>&, const optional<U>&);
template<class T, class U>
constexpr bool operator<(const optional<T>&, const optional<U>&);
template<class T, class U>
constexpr bool operator>(const optional<T>&, const optional<U>&);
template<class T, class U>
constexpr bool operator<=(const optional<T>&, const optional<U>&);
template<class T, class U>
constexpr bool operator>=(const optional<T>&, const optional<U>&);
template<class T, three_way_comparable_with<T> U>
constexpr compare_three_way_result_t<T, U> operator<=>(const optional<T>&, const optional<U>&);
// comparison with nullopt
template<class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
template<class T> constexpr strong_ordering operator<=>(const optional<T>&, nullopt_t) noexcept;
// comparison with T
template<class T, class U> constexpr bool operator==(const optional<T>&, const U&);
template<class T, class U> constexpr bool operator==(const T&, const optional<U>&);
template<class T, class U> constexpr bool operator!=(const optional<T>&, const U&);
template<class T, class U> constexpr bool operator!=(const T&, const optional<U>&);
template<class T, class U> constexpr bool operator<(const optional<T>&, const U&);
template<class T, class U> constexpr bool operator<(const T&, const optional<U>&);
template<class T, class U> constexpr bool operator>(const optional<T>&, const U&);
template<class T, class U> constexpr bool operator>(const T&, const optional<U>&);
template<class T, class U> constexpr bool operator<=(const optional<T>&, const U&);
template<class T, class U> constexpr bool operator<=(const T&, const optional<U>&);
template<class T, class U> constexpr bool operator>=(const optional<T>&, const U&);
template<class T, class U> constexpr bool operator>=(const T&, const optional<U>&);
template<class T, class U>
requires(!/*is-derived-from-optional*/<U>) && three_way_comparable_with<T, U>
constexpr compare_three_way_result_t<T, U> operator<=>(const optional<T>&, const U&);
// specialized algorithms
template<class T>
constexpr void swap(optional<T>&, optional<T>&) noexcept(/* see description */);
template<class T> constexpr optional<decay_t<T>> make_optional(T&&);
template<class T, class... Args> constexpr optional<T> make_optional(Args&&... args);
template<class T, class U, class... Args>
constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
// hash support
template<class T> struct hash;
template<class T> struct hash<optional<T>>;
template<class T>
class optional
{
public:
using value_type = T;
using iterator = /* implementation-defined */;
using const_iterator = /* implementation-defined */;
// constructors
constexpr optional() noexcept;
constexpr optional(nullopt_t) noexcept;
constexpr optional(const optional&);
constexpr optional(optional&&) noexcept(/* see description */);
template<class... Args> constexpr explicit optional(in_place_t, Args&&...);
template<class U, class... Args>
constexpr explicit optional(in_place_t, initializer_list<U>, Args&&...);
template<class U = remove_cv_t<T>>
constexpr explicit(/* see description */) optional(U&&);
template<class U>
constexpr explicit(/* see description */) optional(const optional<U>&);
template<class U> constexpr explicit(/* see description */) optional(optional<U>&&);
// destructor
constexpr ~optional();
// assignment
constexpr optional& operator=(nullopt_t) noexcept;
constexpr optional& operator=(const optional&);
constexpr optional& operator=(optional&&) noexcept(/* see description */);
template<class U = remove_cv_t<T>> constexpr optional& operator=(U&&);
template<class U> constexpr optional& operator=(const optional<U>&);
template<class U> constexpr optional& operator=(optional<U>&&);
template<class... Args> constexpr T& emplace(Args&&...);
template<class U, class... Args> constexpr T& emplace(initializer_list<U>, Args&&...);
// swap
constexpr void swap(optional&) noexcept(/* see description */);
// iterator support
constexpr iterator begin() noexcept;
constexpr const_iterator begin() const noexcept;
constexpr iterator end() noexcept;
constexpr const_iterator end() const noexcept;
// observers
constexpr const T* operator->() const noexcept;
constexpr T* operator->() noexcept;
constexpr const T& operator*() const& noexcept;
constexpr T& operator*() & noexcept;
constexpr T&& operator*() && noexcept;
constexpr const T&& operator*() const&& noexcept;
constexpr explicit operator bool() const noexcept;
constexpr bool has_value() const noexcept;
constexpr const T& value() const&; // freestanding-deleted
constexpr T& value() &; // freestanding-deleted
constexpr T&& value() &&; // freestanding-deleted
constexpr const T&& value() const&&; // freestanding-deleted
template<class U = remove_cv_t<T>> constexpr T value_or(U&&) const&;
template<class U = remove_cv_t<T>> constexpr T value_or(U&&) &&;
// monadic operations
template<class F> constexpr auto and_then(F&& f) &;
template<class F> constexpr auto and_then(F&& f) &&;
template<class F> constexpr auto and_then(F&& f) const&;
template<class F> constexpr auto and_then(F&& f) const&&;
template<class F> constexpr auto transform(F&& f) &;
template<class F> constexpr auto transform(F&& f) &&;
template<class F> constexpr auto transform(F&& f) const&;
template<class F> constexpr auto transform(F&& f) const&&;
template<class F> constexpr optional or_else(F&& f) &&;
template<class F> constexpr optional or_else(F&& f) const&;
// modifiers
constexpr void reset() noexcept;
private:
T* val; // exposition-only
};
template<class T> optional(T) -> optional<T>;
class bad_optional_access : public exception
{
public:
// for the specification of the special member functions
constexpr const char* what() const noexcept override;
};
}
6. 둘러보기
||<:><-12><width=90%><tablewidth=100%><tablebordercolor=#20b580><rowbgcolor=#090f0a,#050b09><rowcolor=#d7d7d7,#a1a1a1>C++||||
}}}
}}}||
}}}||
| C언어와의 차이점 | 학습 자료 | 평가 | |||||||||||||
| <bgcolor=#20b580> | |||||||||||||||
| <rowcolor=#090912,#bebebf>C++ 문법 | |||||||||||||||
| <bgcolor=#ffffff> | |||||||||||||||
main | 헤더 | 모듈 | |||||||||||||
| 함수 | 구조체 | 이름공간 | |||||||||||||
| 한정자 | 참조자 | 포인터 | |||||||||||||
| 클래스 | 값 범주론 | 특성 | |||||||||||||
auto | using | decltype | |||||||||||||
| 상수 표현식 | 람다 표현식 | 객체 이름 검색 | |||||||||||||
| 템플릿 | 템플릿 제약조건 | 메타 프로그래밍 | |||||||||||||
| <bgcolor=#20b580> | |||||||||||||||
| <rowcolor=#090912,#bebebf>C++ 버전 | |||||||||||||||
| <bgcolor=#ffffff> | |||||||||||||||
| C++26 | C++23 | C++20 | |||||||||||||
| C++17 | C++14 | C++11 | |||||||||||||
| C++03 | C++98 | C with Classes | |||||||||||||
| <bgcolor=#20b580> | |||||||||||||||
| <rowcolor=#090912,#bebebf>C++ 표준 라이브러리 | |||||||||||||||
| <rowcolor=#090912,#bebebf>문서가 있는 모듈 목록 | |||||||||||||||
| <bgcolor=#ffffff> | |||||||||||||||
#개요 | C++11 #개요 | <unordered_map>C++11 #개요 | |||||||||||||
C++20 #개요 | #개요 | #개요 | |||||||||||||
C++11 #개요 | C++11 #개요 | C++17 #개요 | |||||||||||||
#개요 | <string_view>C++17 #개요 | C++20 #개요 | |||||||||||||
C++11 #개요 | C++11 #개요 | C++11 #개요 | |||||||||||||
C++20 #개요 | C++23 #개요 | ||||||||||||||
| <bgcolor=#20b580> | |||||||||||||||
| <rowcolor=#090912,#bebebf>예제 목록 | |||||||||||||||
| <bgcolor=#ffffff> | |||||||||||||||
| {{{#!wiki style=""text-align: center, margin: 0 -10px" {{{#!folding [ 펼치기 · 접기 ] | 임계 영역과 경쟁 상태std::mutex | 개선된 스레드 클래스std::jthread | 동시성 자료 구조 1 스레드 안전한 큐 구현 | 동시성 자료 구조 2 스레드 안전한 집합 구현 | |||||||||||
메모리 장벽std::atomic_thread_fence | 스레드 상태 동기화 1 스레드 대기와 기상 | 원자적 메모리 수정std::compare_exchange_strong | 스레드 상태 동기화 2 스핀 락 구현 | ||||||||||||
| 함수 템플릿 일반화 프로그래밍 | 전이 참조 완벽한 매개변수 전달 | 튜플 구현 가변 클래스 템플릿 | 직렬화 함수 구현 템플릿 매개변수 묶음 | ||||||||||||
| SFINAE 1 멤버 함수 검사 | SFINAE 2 자료형 태그 검사 | SFINAE 3 메타 데이터 | SFINAE 4 자료형 트레잇 | ||||||||||||
| 제약조건 1 개념 (Concept) | 제약조건 2 상속 여부 검사 | 제약조건 3 클래스 명세 파헤치기 | 제약조건 4 튜플로 함자 실행하기 | ||||||||||||
| 메타 프로그래밍 1 특수화 여부 검사 | 메타 프로그래밍 2 컴파일 시점 문자열 | 메타 프로그래밍 3 자료형 리스트 | 메타 프로그래밍 4 안전한 union | ||||||||||||
}}}||
| <bgcolor=#20b580> | |||||||||||||||
| <rowcolor=#090912,#bebebf>외부 링크 | |||||||||||||||
| <bgcolor=#ffffff> | |||||||||||||||
| {{{#!wiki style=""text-align: center, margin: 0 -10px" | |||||||||||||||
| <bgcolor=#20b580> | |||||||||||
| <rowcolor=#090912,#bebebf>C++ |