c++11 새로운 기능 의 템 플 릿 개선
템 플 릿 의 오른쪽 끝 괄호템 플 릿 의 별명
함수 템 플 릿 의 기본 템 플 릿 매개 변수
템 플 릿 의 오른쪽 끝 괄호
C++11 이전 에는 두 개의 오른쪽 괄호 가 나타 나 는 것 을 허용 하지 않 습 니 다.오른쪽 이동 연산 자로 여 겨 지기 때문에 중간 에 빈 칸 을 추가 하여 분할 하여 컴 파일 오류 가 발생 하지 않도록 해 야 합 니 다.
int main() {
std::vector<std::vector<int>> a; // error
std::vector<std::vector<int> > b; // ok
}
그 건 몰 랐 습 니 다.제 가 프로 그래 밍 을 배우 기 시 작 했 을 때 부터 C+11 의 시 대 였 습 니 다.템 플 릿 의 별명
C++11 은 using 을 도입 하여 번 거 로 운 type:def 대신 별명 을 쉽게 정의 할 수 있 습 니 다.
typedef std::vector<std::vector<int>> vvi; // before c++11
using vvi = std::vector<std::vector<int>>; // c++11
using 을 사용 하면 뚜렷 하고 간결 하 며 읽 기 쉽 습 니 다.여러분 도 전에 type:def 정의 함수 포인터 와 같은 조작 을 본 적 이 있 을 것 입 니 다.그 썩 은 코드 는 열거 하지 않 겠 습 니 다.어차피 저 는 알 아 볼 수도 없고 보고 싶 지도 않 습 니 다.앞으로 using 을 사용 할 수 있 습 니 다.어,열거 하 세 요.
typedef void (*func)(int, int); // ,
using func = void (*)(int, int); // typedef
위의 코드 는 using 을 사용 하여 type:def 보다 쉽게 볼 수 있 습 니 다.하지만 저 는 잘 모 르 겠 습 니 다.왜냐하면 저 는 함수 지침 을 이런 식 으로 표시 하지 않 기 때 문 입 니 다.std:function(),std:bid(),std::placeholder(),lambda 표현 식 으로 향 이 좋 지 않 습 니까?함수 템 플 릿 의 기본 템 플 릿 매개 변수
C++11 이전 에는 클래스 템 플 릿 만 기본 템 플 릿 파 라 메 터 를 지원 합 니 다.함수 템 플 릿 은 기본 템 플 릿 파 라 메 터 를 지원 하지 않 습 니 다.C++11 이후 에는 모두 지원 합 니 다.
template <typename T, typename U=int>
class A {
T value;
};
template <typename T=int, typename U> // error
class A {
T value;
};
클래스 템 플 릿 의 기본 템 플 릿 인 자 는 오른쪽 에서 왼쪽으로 정의 해 야 하 며 함수 템 플 릿 은 이 제한 이 없습니다.
template <typename R, typename U=int>
R func1(U val) {
return val;
}
template <typename R=int, typename U>
R func2(U val) {
return val;
}
int main() {
cout << func1<int, double>(99.9) << endl; // 99
cout << func1<double, double>(99.9) << endl; // 99.9
cout << func1<double>(99.9) << endl; // 99.9
cout << func1<int>(99.9) << endl; // 99
cout << func2<int, double>(99.9) << endl; // 99
cout << func1<double, double>(99.9) << endl; // 99.9
cout << func2<double>(99.9) << endl; // 99.9
cout << func2<int>(99.9) << endl; // 99
return 0;
}
함수 템 플 릿 에 대해 매개 변수의 충전 순 서 는 왼쪽 에서 오른쪽으로 됩 니 다.C++11 템 플 릿 개선 에 대해 서 는 여기까지 입 니 다.계속 지 켜 봐 주세요~
참고 자료
《깊이 응용 C++11:코드 최적화 와 공정 급 응용》
https://blog.csdn.net/tennysonsky/article/details/77817027
https://blog.csdn.net/wf19930209/article/details/79309881?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1
c++11 새로운 기능 의 템 플 릿 개선 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c++11 새로운 기능 의 템 플 릿 개선 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
최 단 로 - 체인 식 전진 성, 디 제 스 트 라 알고리즘 의 전형 적 인 예제모 성 은 여러 해 동안 의 원활 한 공사 계획 을 실행 한 후에 마침내 많은 길 을 건설 하 였 다.길 을 많이 건 너 지 않 아 도 좋 지 않다. 한 도시 에서 다른 도시 로 갈 때마다 여러 가지 도로 방안 을 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.