C++17 신기능 세가지 조합해서 나오는 패턴 ㄷㄷ 검색하면 여기저기서 많이 쓰던데 최신 표준에서만 가능해서 그런가 책에서는 본적이 없어
[%] 모던 C++린이 오늘 레딧에서 보고 공부한 overload 패턴
야야야(yaiyaiya)
2020-01-24 11:23
추천 0
댓글 16
다른 게시글
-
와인 5.0 나왔데 [4][%] 익명(220.81) | 20.01.24추천 0
-
심심해서 만든짤 [5][%] 제로투(223.38) | 20.01.23추천 3
-
rust 순간 오늘 삽질한부분 [3][%] 익명(61.75) | 20.01.23추천 0
-
리젠 또 씹창났네 [2][%] 익명(125.140) | 20.01.23추천 0
-
국내에서 하스켈 쓰는 회사 몇개있냐 [1][%] 익명(211.36) | 20.01.23추천 0
-
갠플젝 3만줄 넘겼다 [4][%] ㅇㄹ(rerereq) | 20.01.23추천 1
-
형님들 파이썬 공부하는 코붕이인데 질문하나만 드려도 되겠습니까 [4][%] 익명(218.146) | 20.01.23추천 0
-
깃헙 블로그 만드는데 커스텀 힘둘다 [2][%] 유사학생(awesomedotnet) | 20.01.22추천 0
-
MS는 웨 한 글자를 좋아할까 [2][%] 익명(125.176) | 20.01.22추천 0
-
심심해서 하스켈로 노노그램 솔버 만드는 중 [4][%] 익명(121.167) | 20.01.22추천 1
저거 볼때마다 궁금했던건데, 2번째 저건 도대체 뭐임?
CTAD 말하는거?
std::vector v{0, 1, 2}; 처럼 템플릿 인자 명시 안하면 컴파일러가 연역해주는 기능이 생겼는데, 이게 커버 안되거나 비틀고 싶은 부분을 사용자가 정의하게 해주는거래
CTAD로 찾아볼게. 저게 그럼 overload의 생성자로 들어온 인자를 템플릿 인자로 쓰라는 힌트야? 그냥 struct 안에다가 생성자 선언하는거랑 똑같은거임?
생성자 선언이랑은 다름 이미 있는 생성자(여기서는 컴파일러가 자동으로 만들어준 생성자)에 들어온 인자를 이용해 템플릿 인자를 연역하게한 것
https://en.cppreference.com/w/cpp/language/class_template_argument_deduction
여기에서
User-defined deduction guides 이거네
그저패턴매칭인거시에요
근데 소스대로 하면 카피될거같으니가 forward 쓰자
어느 부분?
https://arne-mertz.de/2018/05/overload-build-a-variant-visitor-on-the-fly/
아니 뭐야 레딧링크 가보니까 아래쪽에 forward 설명 이미 있네
overload 생성자 따로 만들어서 인자에 forward 적용하란 말? 위 소스에서는 람다들을 바로 임시값으로 받아서 우측값인거 확정이라 forward 의미 없을 것 같은데
일반화시키야지 저렇게만 쓸리가
그러네 위 소스대로'만' 하면 의미없네
참고했음 감사 ㅇㅇ
저게 무슨 외계어도 아니고 그래서 난 C++ 공부 안 한당 ㅋㅋ