value category C++의 식은 타입과는 별도로 value category라는 것을 갖는다. value category는 prvalue, xvalue, lvalue 중 하나이고, prvalue와 xvalue를 모아서 우측 값 이라고 부른다. 주의해야 할 것으로 같은 형을 가진 식에서도 다른 value category를 가질 있다. 같은 객체를 돌려주는 식이라도...
더 읽기
일반적으로 C++로 작성된 코드가 C 보다 컴파일 시간이 느린 이유 그 이유는 주로 아래의 5개이다. C++ 문법의 복잡성, 소스 코드의 parse(어휘 분석, 구문 분석, 의미 분석)에 시간을 요하고 있다 템플릿의 실체화에 시간이 걸린다 복잡한 최적화를 실시 할 필요가 있다 표준...
더 읽기
출처 함수 템플릿의 포인터를 함수에 넘기는 경우 template<typename T, typename Func> T calc(T a, T b, Func func){ return func(a, b); } template<typename T> T plus(T a, T b){ return a + b; } assert(calc(1, 2, &plus<int>) == 3, "");...
더 읽기
3,4년 전쯤에 번역했던 것을 공유한다
더 읽기
template<class T> struct foo{ T operator()( ... ){ ... }; }; std::array< double, ... > a = ; bar( foo< >() ); // < > 안에 a의 요소 타입 double을 넣고 싶다.. bar( foo< decltype(a)::value_type >() ); // decltype(a)::value_type은 double...
더 읽기
예제 코드 #include <iostream> #include <map> #include <string> double Add(double a, double b){ return a + b; } double Sub(double a, double b){ return a - b; } double Mul(double a, double b){ return a * b; } double Div(double...
더 읽기
C++에 존재하는 여러 종류의 함수를 wrap 하여 똑같이 다룬다 C++에 있는 함수의 종류 함수 람다식 함수 객체 클래스의 멤버 함수 람다식 사용법 [캡처](인수)->반환 값 타입 { 함수의 내용 }(실행 시 인수); 캡처에는 기본적으로[=] 나 [&]가 들어간다. =는 범위 밖의 변수를...
더 읽기
#include <iostream> // std::cout, std::endl; #include <algorithm> // std::unique #include <vector> // std::vector void printVec(std::vector<int> &vec) { std::cout << ""; for (auto it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl;...
더 읽기
지정한 함수를 wrap해서 std::function을 만든다. #include <iostream> void test_function(int a, int b) { printf("a=%d, b=%d\n", a, b); } int main(int argc, const char * argv[]) { auto func1 = std::bind(test_function, std::placeholders::_1, std::placeholders::_2); func1(1, 2); // -> a=1, b=2 auto func2...
더 읽기
3,4년 전쯤에 번역했던 것을 공유한다
더 읽기