본문 바로가기

c++24

meta template(moden c++ 방법) 템플릿 메타 프로그래밍 템플릿은 일반적으로 컴파일 타임에 결정된다. 이러한 것을 활용한 것이 템플릿 메타프로그래밍이다.. 메타 템플릿은 c++11이 발표되기전에 사용... 현재는 modernc++에서는 constexpr 함수 사용.. constexpr size_t factorial(size_t n) { return n == 1 ? 1 : n * factorial(n - 1); } int main() { constexpr size_t ret = factorial(5); cout 2022. 5. 23.
using template, variable template using template 원래 using 문법이 나오기전에는 typedef를 많이 사용했다 그런데 여기서 typedef는 타입에만 가능하고 템플릿에는 alias가 안된다는 것이다.. 그렇지만 using 문법은 템플릿에대해서도 alias가 가능하다.. 예시. //type alias using SET = unordered_st; //template alias.. template using SET = unordered_set; int main() { SET s1; }variable template 이것은 그냥 variable tmeplate만 보면 필요없어 보이기는 하는데... type_traits 구현의 핵심 문법이다.. template constexpr T pi = static_cast(3.141592).. 2022. 5. 23.
std::condition 구현 condition condition는 인자가 3가지가 있는데 첫번째 인자에 따라서 값이 두번째것으로 될 것인지 or 세번째 것으로 될 것인지 변경된다. conditional::type v1; conditional::type v2; 위에서 첫번째 v1은 첫번째인자가 true라서 int로 된다. v2는 첫번째 인자가 false라서 v2의 값은 double이된다. condition 구현. template struct conditional { using type = T1; }; template struct conditional { using type = T2; }; int main() { //conditional의 bool 인자가 true이거나, false로 결정되는데 bool이 true이면 두번재가 채택되고,.. 2022. 5. 23.
c++20(concept) concpet란? concept는 c++20에서 추가된 것이다. 이것을 사용하는 이유는 몇가지 있는데 대표적으로 template을 사용할 때 에러코드는 길어져서 읽기가 힘든 것이있다. 그렇지만 concept를 이용해서 제약조건을 준다면 에러코드가 명확해지면서 짧아지게된다. 또한 requires절과 함수오버로딩을 섞을 수 있다 -> 함수 오버로딩을 하는데 만약 제약조건에서 가상함수 일 경우는 함수a를 사용하고 그렇지않으면 함수 b를 사용하게 하는 경우 적용할 수 있다.. concept은 --- > a named set of requirements이다.. 이것은 요구조건들의 집합..! 조건을 하나가 아니라 여러개를 둘 수 있다는 의미이다. 기본 문법 예제 template concept GreaterThan4.. 2022. 5. 23.