반응형

std::typeid 활용

  • C++ 표준의 typeid() 연산자 사용
    • const, volatile, reference 구분하여 조사할 수 없음
#include <iostream>
using namespace std;

template<typename T> void foo(const T a)
{
    cout << "T : " << typeid(T).name() << endl;
    cout << "a : " << typeid(a).name() << endl;
}

int main()
{
    foo(3);
    foo(3.3);
}

결과

int
int
double
double

 

boost:type_index 활용

  • boost::type_id_with_scv<T>().pretty_name() 사용
  • const, volatile, reference 구분하여 조사할 수 있음
  • <boost/type_index.hpp>
  • namespace boost::typeindex 안에 포함
  • 변수의 타입을 조사 할때는 decltype()을 이용
    • type_id_with_cvr<decltype(a)>().pretty_name()
  • boost 사용법 참고 : https://www.devoops.kr/77
#include <iostream>
#include <boost/type_index.hpp>
using namespace std;
using namespace boost::typeindex;

template<typename T> void foo(const T a) // 실제 템플릿 타입 T와 변수타입은 다를 수 있음
{
    //cout << "T : " << typeid(T).name() << endl; // int, double
    //cout << "a : " << typeid(a).name() << endl; // int, double : std의 typeid로는 구분 불가
    cout << type_id_with_cvr<T>().pretty_name() << endl;
    cout << type_id_with_cvr<decltype(a)>().pretty_name() << endl;
}

int main()
{
    foo(3);
    foo(3.3);
}

결과

int
int const
double
double const

 

 

 

반응형

반응형

boost 설치

아래의 boost 사이트에 접속하여 런타임 플랫폼에 맞는 설치 파일 다운로드

https://www.boost.org/users/download/

압축파일을 적당한 위치에 해제한다

대부분의 기능은 헤더파일 참조로 사용 가능하지만 일부 기능은 사전 빌드가 필요하므로 제공하는 배치 파일과 빌드 실행파일을 이용하여 빌드를 진행하자.

  • 빌드 실행 파일 생성 : bootstrap.bat(실행 시 b2.exe 생성됨)
  • 빌드 실행 : b2.exe(성공적으로 빌드가 완료되면 stage/lib 디렉토리에 다양한 파일이 생성됨)

비주얼 스튜디오 > 프로젝트 > 속성

속성 > VC++ 디렉터리 > 일반 > 포함 디렉터리 > 편집

포함 디렉터리 > 줄 추가 > ...찾기 > boost 폴더 선택

속성 > VC++ 디렉터리 > 일반 > 라이브러리 디렉터리 > 편집

라이브러리 디렉터리 > 줄 추가 > ...찾기 > boost 폴더/stage/lib 선택

 

이제 boost 라이브러리에 포함된 기능을 include하여 사용하자

#include "pch.h"
#include <iostream>
#include <boost/any.hpp> // 관행상 boost 폴더를 포함
using namespace std;

int main()
{
    boost::any a1 = 1;
    boost::any a2 = 1.1;
    boost::any a3 = "aaa";

    const char* s = boost::any_cast<const char*>(a3);
}

 

 

 

 

 

 

 

 

반응형

+ Recent posts