티스토리 뷰
auto
auto는 추론을 할 때 const int, 이러한 것들을 때어버린다. 즉 int로 인식한다는 뜻이다.
이러한 경우 const auto& 로 추론을 해줘야한다.
auto 로도 const 자료형& 추론이 되긴 한다.
template<class T> 이러한 경우에도 const int 같은 경우에 대해, auto와 비슷한 논리가 적용된다.
auto&& r-value reference 또한, 지원한다.
decltype
typedef decltype(lhs * rhs) pruduct_type;
product_type prod2 = lhs * rhs;
decltype(lhs * rhs) prod3 = lhs * rhs;
return type으로도 사용이 가능하다.
templata<typename T, typename S>
auto func_ex8(T lhs, S rhs) -> decltype(lhs * rhs)
{
return lhs * rhs;
}
typedef decltype(x) x_type;
typedef decltype(cx) cx_type; // const를 가져옴
typedef decltype(crx) crx_type; // const 유지
typedef decltype(p->m_x) x_type; // const를 가져오지 않음.
typedef delctype((x)) x_with_parens_type; // add references to l-values
typedef delctype((cx)) cx_with_parens_type;
typedef delctype((crx)) cx_with_parens_type;
typedef delctype((p->m_x)) px_with_parens_type; // const를 가져옴 왜냐하면 reference로 가져오는데 변하면 큰일 나기 때문
type이 같을 경우 &를 붙혀서 리턴 하지 않지만, type이 다를 경우 reference를 붙혀 리턴하는 경우가 존재하므로 이러한 과정을 거치는것이 안전하다.
template<typename T, typename S>
auto ex13(T lhs, S rhs) ->
typename std::remove_reference<decltype(x > y ? x : y)>::type
{
return (x > y ? x : y)
}
auto lamdba = [](auto x, auto y)
{
return x + y;
}
cout << lambda(1.1, 2) << " " << lambda(3, 2) << " " << lambda(4.5, 2.2) << endl;
'언어 > C++' 카테고리의 다른 글
19.7 완벽한 전달과 std::forward (0) | 2020.05.30 |
---|---|
19.3 std::thread와 멀티쓰레딩 기초 (0) | 2020.05.28 |
19.2 C++17 함수에서 여러 개의 리턴값 반환하기 (0) | 2020.05.28 |
19.1 람다 함수와 std::function std::bind, for_each (나중에 정리할것!) (0) | 2020.05.28 |
18.3 문자열 스트림 (0) | 2020.05.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2차원 배열
- 다차원 배열
- Algorithm
- 파이썬
- 구조체
- 종류
- 형승격
- 공부
- 배열
- 간접 지정
- 시간복잡도
- 공용체
- 3차원 배열
- 알고리즘
- inflearn
- 1차원 배열
- 재귀함수
- 직접 지정
- codeit
- timecomplexity
- 비트필드
- 공간복잡도
- 강의
- call by value
- 포인터
- 자료구조
- call by reference
- 프로그래밍
- 회전리스트
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함