c++11 새로운 기능 의 템 플 릿 개선

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 새로운 기능 의 템 플 릿 개선 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기