본문 바로가기

분류 전체보기

integral promotion conversion에 대해 conversion의 설계 개념 C++의 conversion를 정의할 때, 직교하는 3 요소, value category, cv-qualification, data representation를 설계 개념으로 사용한다. conversion를 설계할 때, 요소 중 하나만을 변형하고, 다른 요소를 변형하지 않는다. 어떤 이유로, 예를 들어 하위 호환성을 위해, 설계 개념을 위반할 때는 스펙 문서는 관련된 특수 조항을 별도로 명시한다. integer conversion rank 정수형 변수 타입간의 rank는 다음과 같다. char8_t, char16_t, char32_t, wchar_t 타입의 integer conversion rank는 underlying type의 integer conversion rank.. 더보기
temporary materialization conversion에 대해 conversion의 설계 개념 C++의 conversion를 정의할 때, 직교하는 3 요소, value category, cv-qualification, data representation를 설계 개념으로 사용한다. conversion를 설계할 때, 요소 중 하나만을 변형하고, 다른 요소를 변형하지 않는다. 어떤 이유로, 예를 들어 하위 호환성을 위해, 설계 개념을 위반할 때는 스펙 문서는 관련된 특수 조항을 별도로 명시한다. temporary materialization conversion value category 요소를 변형하기 위해 설계한 conversion이다. value category 요소만 변경하기 때문에, exact match rank로 분류해야 하지만, 최근에 추가된 conversio.. 더보기
function-to-pointer conversion에 대해 conversion의 설계 개념 C++의 conversion를 정의할 때, 직교하는 3 요소, value category, cv-qualification, data representation를 설계 개념으로 사용한다. conversion를 설계할 때, 요소 중 하나만을 변형하고, 다른 요소를 변형하지 않는다. 어떤 이유로, 예를 들어 하위 호환성을 위해, 설계 개념을 위반할 때는 스펙 문서는 관련된 특수 조항을 별도로 명시한다. function-to-pointer conversion value category 요소를 변형하기 위해 설계한 conversion이다. value category 요소만 변경하기 때문에, exact match rank로 분류된다. 또한 일반적으로 cv-qualification이나.. 더보기
array-to-pointer conversion에 대해 conversion의 설계 개념 C++의 conversion를 정의할 때, 직교하는 3 요소, value category, cv-qualification, data representation를 설계 개념으로 사용한다. conversion를 설계할 때, 요소 중 하나만을 변형하고, 다른 요소를 변형하지 않는다. 어떤 이유로, 예를 들어 하위 호환성을 위해, 설계 개념을 위반할 때는 스펙 문서는 관련된 특수 조항을 별도로 명시한다. array-to-pointer conversion value category 요소를 변형하기 위해 설계한 conversion이다. value category 요소만 변경하기 때문에, exact match rank로 분류된다. 또한 일반적으로 cv-qualification이나 da.. 더보기
glvalue-to-prvalue conversion에 대해 conversion의 설계 개념 C++의 conversion를 정의할 때, 직교하는 3 요소, value category, cv-qualification, data representation를 설계 개념으로 사용한다. conversion를 설계할 때, 요소 중 하나만을 변형하고, 다른 요소를 변형하지 않는다. 어떤 이유로, 예를 들어 하위 호환성을 위해, 설계 개념을 위반할 때는 스펙 문서는 관련된 특수 조항을 별도로 명시한다. glvalue-to-prvalue conversion value category 요소를 변형하기 위해 설계한 conversion이다. value category 요소만 변경하기 때문에, exact match rank로 분류된다. 또한 일반적으로 cv-qualification이나 .. 더보기
DefaultInfo 프로바이더 이해하기 DefaultInfo 모든 bazel의 rule은 implementation 함수에서 DefaultInfo 프로바이더를 명시적으로 반환하지 않더라도 암묵적으로 DefaultInfo 프로바이더를 갖는다. DefaultInfo는 target의 결과 파일 정보뿐만 아니라, transitive file 정보도 files 멤버로 포함하고 있다. 실행 시간에 필요한 데이터 정보는 default_runfiles 멤버가 포함하고 있다. 일반적으로 default_runfiles 정보가 다른 rule에 참여하면, runfiles 필드 항목을 통해 또다시 포워딩해야 한다. DefaultInfo 멤버 DefaultInfo // 생성자 함수 files // 멤버 변수 files_to_run // 멤버 변수 data_runfil.. 더보기
nasm_library 구현해보기 개요 nasm.exe 기반으로 nasm_libray rule를 정의하는 작업은 매우 흥미롭다. 기본적으로 빌드 시스템이 외부 tool를 제어해 원하는 결과물은 만드는 tool chain 기술이라고 볼 수 있고, 단순한 nasm.exe 파일은 툴을 넘어서, 동시에 앞으로 만날 가장 단순한 형태의 컴파일러라고도 볼 수 있다. 풀어야 과제 풀어야 할 과제는 명확하다. nasm_library가 작동하도록 nasm_library.bzl 파일을 생성해야 한다. nasm_library의 src 항목은 filegroup 정보를 입력으로 사용할 수도 있지만, 일반 asm 파일을 받아낼 수 있어야 한다. 이렇게 만들어진 룰을 곧바로 cc_binary나 cc_library과 연계될 수 있어야 한다. load("//proje.. 더보기
semiregular concept [[semiregular]] concept 개요 copyable concept과 default_initializable concept를 만족하면 semiregular concept를 만족한다. - [[copyable]] concept - T a(b); // copy constructor - T a = b; // copy constructor - a = b; // assignment - [[default_initializable]] concept - T a; // default initialization - T{}; // direct-list initialization - T(); // value initialization == [[std::constructible_from]]import std; temp.. 더보기