일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 레이캐스팅
- 42seoul
- 42서울
- 텍스트북
- GraphQL
- mistel키보드
- c++
- adminbro
- psql extension
- 스타트업
- 이노베이션아카데미
- 창업
- Cloud Spanner
- 프라이빗클라우드
- 정렬
- raycasting
- 도커
- schema first
- 어셈블리어
- 쿠버네티스
- enable_if
- SFINAE
- 어셈블리
- 자료구조
- 파이썬
- 동료학습
- uuid-ossp
- 부동소수점
- 엣지컴퓨팅
- 스플릿키보드
- Today
- Total
목록c++ (4)
written by yechoi
👉 이 글은 C++ - Why static member function can't be created with 'const' qualifier 일부를 번역했습니다. 멤버 함수에 붙는 const 수식어의 의미는 객체 인스턴스를 변경하지 않을 것이고 const 객체에서 호출도리 수 있다는 것입니다. static 멤버 함수는 어떠한 객체 인스턴스에도 엮여있지 않습니다. const 객체의 static 변수를 호출하는 일은 없으므로, static 멤버 함수의 const 수식은 말이 안됩니다. const 수식어를 nonstatic 멤버 함수에 적용하면, 이는 this 포인터에 영향을 미칩니다. 클래스 C의 const 수식 멤버 함수에서 this 포인터는 C const * 가 됩니다. 반면 non-const 멤버 함..
SFINAE란 Substition Failure Is Not An Error의 약자이다. 템플릿 인자 추론에서, C++ 컴파일러는 적합한 오버로딩 함수를 찾는다. 그 과정에서 함수 템플릿을 인스턴스화할 때, 인자나 결과가 유효하지 않다면 '컴파일 에러'를 뱉는 대신에 오버로드 결과물에서 해당 인스턴스화한 것을 지운다. 무슨 의미인지는 코드 예시를 보며 확인해본다. long multiply(int i, int j) { return i * j; } template typename T::multiplication_result multiply(T t1, T t2) { return t1 * t2; } int main(void) { multiply(4,5); } 위 코드에서 단순 multiply 함수가 있고, 템플..
프로그래밍을 시작한지 어연 1년 6개월. 지금까지 한 것 중 가장 큰 프로젝트가 막을 내렸다. 3명이서 팀을 이뤄 c++로 nginx와 비슷하려고 노력한 웹서버를 하나 만들었다. 스터디를 시작한 것이 2월 1일이고 프로젝트를 제출한 것이 4월 24일이니까, 거의 꽉채운 세달이 걸렸다. 오랜 걸린 만큼이나 느끼고 배운 것들이 많다. 이번 프로젝트를 통해 성장한 점을 기록해보고자 한다. git으로 구조화된 협업하기 이전에도 git은 사용했지만, 거의 코드 저장소로 사용했을 뿐이다. 이번 프로젝트를 하면서 git을 좀더 '협업툴스럽게' 사용할 수 있게 됐다. 우리는 git으로 협업을 관리했고, 그 과정에서 처음부터 끝까지 지키려고 한 규칙들이 있다. 이러한 규칙들이 있어 비효율적인 소통을 줄일 수 있었다. 1..
* 본 글은 아래의 문서를 정리했습니다. Standard C++ isocpp.org 먼저 알아둬야 할 사실은 다음과 같다. 템플릿은 클래스도 함수도 아니다. 클래스, 함수 패밀리를 생성하기 위해 컴파일러가 사용하는 "패턴"이다. 컴파일러가 코드를 생성하기 위해선, 컴파일러는 템플릿의 선언뿐만 아니라 정의를 볼 수 있어야 하며 템플릿을 구성하는 타입 등을 알 수 있어야 한다. 예를 들어 Foo를 사용하려고 한다면, 컴파일러는 Foo 템플릿 뿐만 아니라 당신이 Foo를 만들려고 한다는 사실 또한 알아야 한다. 컴파일러는 cpp 파일을 컴파일 하는 동안 각각의 cpp 파일의 내용을 기억하고 있지 않는다. 이러한 방식의 컴파일을 "separate compilation model"이라고 부른다. 이러한 사실을 바..