C++ 20 Lambdas in unevaluated contexts

Lambdas in
unevaluated contexts
unevaluated contexts(미평가 문맥)
어떤 함수를 평가(실행 혹은 호출) 없이 사용할 수 있는 문맥
Lambdas in unevaluated contexts (C++ 20 이전)
Lambdas in unevaluated contexts (C++ 20 이후)
람다 표현식은 평가되지 않은 표현식, 템플릿 인수, 별칭 선언, typedef 선언 및 함수
본문과 함수의 기본 인수를 제외한 함수(또는 함수 템플릿) 선언에서 사용할 수
없습니다.
템플릿
미평가 문맥에서도 캡쳐
C++ 20 부터 가능
name mangling
name mangling?
C++ 에서는 오버로딩을 지원하기 때문에 컴파일러는 함수 인자에 따라 내부에서
구분이 가능한 다른 이름으로 만들어 주는 것. 컴파일러마다 만들어내는 이름은
조금씩 다르다.
기존에는 람다 클로저(객체) 별로 다른 타입을 가지고 있었지만 기존 방식으로는
미평가 문맥에 대응을 할 수 없기 때문에 맹글링 규칙이 변경되었다
https://stackoverflow.com/questions/55722362/lambdas-in-unevaluated-contexts-until-c20
Lambdas in unevaluated contexts (C++ 20 이전)
Lambdas in unevaluated contexts (C++ 20 이후)
1 de 9

Recomendados

C++ 20 class template argument deduction for alias templates por
C++ 20 class template argument deduction for alias templatesC++ 20 class template argument deduction for alias templates
C++ 20 class template argument deduction for alias templates진화 손
3 vistas3 diapositivas
C++ 20 Make stateful allocator propagation more consistent for operator+(basi... por
C++ 20 Make stateful allocator propagation more consistent for operator+(basi...C++ 20 Make stateful allocator propagation more consistent for operator+(basi...
C++ 20 Make stateful allocator propagation more consistent for operator+(basi...진화 손
5 vistas5 diapositivas
C++ 20 Unevaluated asm-declaration in constexpr functions por
C++ 20 Unevaluated asm-declaration in constexpr functionsC++ 20 Unevaluated asm-declaration in constexpr functions
C++ 20 Unevaluated asm-declaration in constexpr functions진화 손
4 vistas3 diapositivas
C++20 Utility functions to implement uses-allocator construction.pdf por
C++20 Utility functions to implement uses-allocator construction.pdfC++20 Utility functions to implement uses-allocator construction.pdf
C++20 Utility functions to implement uses-allocator construction.pdf진화 손
7 vistas9 diapositivas
C++ 20 std__reference_wrapper for incomplete types por
C++ 20 std__reference_wrapper for incomplete typesC++ 20 std__reference_wrapper for incomplete types
C++ 20 std__reference_wrapper for incomplete types진화 손
8 vistas2 diapositivas
C++ 20 Stronger Unicode requirements por
C++ 20 Stronger Unicode requirementsC++ 20 Stronger Unicode requirements
C++ 20 Stronger Unicode requirements진화 손
5 vistas2 diapositivas

Más contenido relacionado

Más de 진화 손

C++ 20 Relaxing the range-for loop customization point finding rules por
C++ 20 Relaxing the range-for loop customization point finding rulesC++ 20 Relaxing the range-for loop customization point finding rules
C++ 20 Relaxing the range-for loop customization point finding rules진화 손
6 vistas2 diapositivas
C++ 20 Relaxing the structured bindings customization point finding rules por
C++ 20 Relaxing the structured bindings customization point finding rulesC++ 20 Relaxing the structured bindings customization point finding rules
C++ 20 Relaxing the structured bindings customization point finding rules진화 손
7 vistas4 diapositivas
C++20 explicit(bool) por
C++20 explicit(bool)C++20 explicit(bool)
C++20 explicit(bool)진화 손
6 vistas3 diapositivas
C++20 std::map::contains por
C++20 std::map::containsC++20 std::map::contains
C++20 std::map::contains진화 손
5 vistas3 diapositivas
C++20 Comparing unordered containers por
C++20 Comparing unordered containersC++20 Comparing unordered containers
C++20 Comparing unordered containers진화 손
8 vistas6 diapositivas
C++20 Attributes [[likely]] and [[unlikely]] por
C++20 Attributes [[likely]] and [[unlikely]]C++20 Attributes [[likely]] and [[unlikely]]
C++20 Attributes [[likely]] and [[unlikely]]진화 손
21 vistas4 diapositivas

Más de 진화 손(20)

C++ 20 Relaxing the range-for loop customization point finding rules por 진화 손
C++ 20 Relaxing the range-for loop customization point finding rulesC++ 20 Relaxing the range-for loop customization point finding rules
C++ 20 Relaxing the range-for loop customization point finding rules
진화 손6 vistas
C++ 20 Relaxing the structured bindings customization point finding rules por 진화 손
C++ 20 Relaxing the structured bindings customization point finding rulesC++ 20 Relaxing the structured bindings customization point finding rules
C++ 20 Relaxing the structured bindings customization point finding rules
진화 손7 vistas
C++20 explicit(bool) por 진화 손
C++20 explicit(bool)C++20 explicit(bool)
C++20 explicit(bool)
진화 손6 vistas
C++20 std::map::contains por 진화 손
C++20 std::map::containsC++20 std::map::contains
C++20 std::map::contains
진화 손5 vistas
C++20 Comparing unordered containers por 진화 손
C++20 Comparing unordered containersC++20 Comparing unordered containers
C++20 Comparing unordered containers
진화 손8 vistas
C++20 Attributes [[likely]] and [[unlikely]] por 진화 손
C++20 Attributes [[likely]] and [[unlikely]]C++20 Attributes [[likely]] and [[unlikely]]
C++20 Attributes [[likely]] and [[unlikely]]
진화 손21 vistas
C++20 Library support for operator<=> <compare> por 진화 손
C++20 Library support for operator<=> <compare>C++20 Library support for operator<=> <compare>
C++20 Library support for operator<=> <compare>
진화 손2 vistas
C++20 const mismatch with defaulted copy constructor por 진화 손
C++20 const mismatch with defaulted copy constructorC++20 const mismatch with defaulted copy constructor
C++20 const mismatch with defaulted copy constructor
진화 손5 vistas
C++20 Atomic std::shared_ptr and std::weak_ptr por 진화 손
C++20 Atomic std::shared_ptr and std::weak_ptrC++20 Atomic std::shared_ptr and std::weak_ptr
C++20 Atomic std::shared_ptr and std::weak_ptr
진화 손11 vistas
C++20 Default member initializers for bit-fields por 진화 손
C++20 Default member initializers for bit-fieldsC++20 Default member initializers for bit-fields
C++20 Default member initializers for bit-fields
진화 손10 vistas
C++ 20 constexpr for algorithm and utility por 진화 손
C++ 20 constexpr for  algorithm and utilityC++ 20 constexpr for  algorithm and utility
C++ 20 constexpr for algorithm and utility
진화 손8 vistas
C++17 init-statements for if and switch por 진화 손
C++17 init-statements for if and switchC++17 init-statements for if and switch
C++17 init-statements for if and switch
진화 손9 vistas
C++17 Aggregate classes with base classes por 진화 손
C++17 Aggregate classes with base classesC++17 Aggregate classes with base classes
C++17 Aggregate classes with base classes
진화 손8 vistas
C++17 std::byte por 진화 손
C++17 std::byteC++17 std::byte
C++17 std::byte
진화 손109 vistas
C++17 Dynamic memory allocation for over-aligned data por 진화 손
C++17 Dynamic memory allocation for over-aligned dataC++17 Dynamic memory allocation for over-aligned data
C++17 Dynamic memory allocation for over-aligned data
진화 손18 vistas
C++17 return type of emplace_ functions of some containers changed from void ... por 진화 손
C++17 return type of emplace_ functions of some containers changed from void ...C++17 return type of emplace_ functions of some containers changed from void ...
C++17 return type of emplace_ functions of some containers changed from void ...
진화 손4 vistas
C++17 [[fallthrough]] attribute por 진화 손
C++17 [[fallthrough]] attributeC++17 [[fallthrough]] attribute
C++17 [[fallthrough]] attribute
진화 손7 vistas
C++ 17 __has_include in preprocessor conditionals por 진화 손
C++ 17 __has_include in preprocessor conditionalsC++ 17 __has_include in preprocessor conditionals
C++ 17 __has_include in preprocessor conditionals
진화 손5 vistas
C++17 Folding expressions por 진화 손
C++17 Folding expressionsC++17 Folding expressions
C++17 Folding expressions
진화 손3 vistas

C++ 20 Lambdas in unevaluated contexts