Recursive template를 이용한 tuple struct 제작

C++에서는 서로 다른 타입의 데이터를 저장하기위해 std::tuple을 제공한다. std::tuple은 그 자체로써 유용하지만 제네릭 프로그래밍을 공부하기에도 중요한 역할을 한다. 실제 std::tuple과 같이 서로 다른 타입의 데이터를 저장하기 위한 구조체를 만들기 위해서는...

noexcept, throw

C++에서는 try-catch 구절을 통해 예외를 처리한다. 함수는 어디서나 예외를 던질 수 있으며, 예외를 처리하지 않으면 terminate()가 호출 되고 SIGABRT가 발생한다. 함수는 C++ 11 이전에 함수 선언 시 발생시킬 예외를 throw-list를...

객체의 유효 범위

객체가 생성이되고 실제 메모리를 할당 받으면 인스턴스라한다. 각 객체, 인스턴스가 유효한 범위에 대해 알아보자. Storage duration 프로그램 내 저장된 모든 객체들은 아래중 하나에 속하게 된다. automatic storage duration: 지역변수로 선언된...

exit(), abort(), assert()

프로그램의 종료에 관하여 C++로 작성된 프로그램은 main 함수의 호출이 끝나면 프로그램 프로그램이 종료된다. main 함수가 끝나기 전 실행흐름에 따라 프로그램을 정상적 비정상적으로 종료할 수 있는 방법을 알아보자. exit() 프로세스를 정상적으로...

전자서명과 인증서

우리는 집을 사기 위해 계약서를 쓸 때나 신용카드를 사용하고 나서 서명을 한다. 여기서 서명은 두 가지 효력이 있다. 첫째, 서명을 보고 서명을 한 사람(서명자)이 누군지 확인 할 수 있다. 둘째,...