맨위로가기

C++ 기술 보고서 1

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

C++ 기술 보고서 1(TR1)은 C++ 프로그래밍 언어의 표준 라이브러리를 확장하기 위한 기술 보고서이다. 이 보고서는 참조 래퍼, 스마트 포인터, 함수 객체, 메타프로그래밍 도구, 난수 생성, 수학 특수 함수, 튜플, 고정 크기 배열, 해시 테이블, 정규 표현식 등 다양한 기능을 추가했다. TR1은 Boost 라이브러리를 기반으로 하며, C 언어와의 호환성을 개선하기 위한 노력도 포함하고 있다. TR1의 후속으로 C++ 기술 보고서 2(TR2)가 제안되었으나, ISO 절차 변경으로 인해 TR2는 진행되지 않고, 대신 C++ 표준 또는 기술 사양서에 개별적으로 포함되었다.

더 읽어볼만한 페이지

  • C++ 라이브러리 - D-Bus
    D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.
  • C++ 라이브러리 - Botan
    Botan은 다양한 암호화 알고리즘을 지원하는 암호화 라이브러리이며, RSA, ElGamal, AES, SHA-256 등 널리 사용되는 알고리즘을 포함하여 공개키 암호화, 공개키 서명, 키 교환, 블록 사이퍼, 스트림 사이퍼, 해시 함수 등을 제공한다.
C++ 기술 보고서 1
C++ 기술 보고서 1
종류기술 보고서
언어C++
발행 기관ISO/IEC JTC1/SC22/WG21
정식 명칭Technical Report 1
발표일2005년
표준ISO/IEC TR 18015, 기술 규격
이전없음
이후C++11
내용
내용 요약정규 표현식
새로운 스마트 포인터 (std::shared_ptr)
해시 테이블
추가적인 수학 함수
범용 함수 포인터
튜플
고정 크기 배열
Type traits

2. 일반 유틸리티

TR1은 프로그래밍 편의성을 높이는 여러 유틸리티를 제공한다. TR1의 내용은 그 자체로 표준이 아니라 앞으로 비준되어야 할 추가 사항이다. 모든 컴파일러가 C++ 표준을 따르기 위해 TR1 요소를 포함해야 하는 것은 아니다. 그러나 TR1의 대부분은 Boost에서 이용할 수 있고, 몇몇 컴파일러/라이브러리에는 그 요소들이 모두 구현되었다.

TR1에 새로 포함될 요소들은 기존 라이브러리와 구별하기 위해 `std::tr1` 네임스페이스으로 정의되었다. TR1은 C++11에 나타난 라이브러리 추가 사항의 완전한 목록은 아니다. 예를 들어, C++11에는 TR1에서 사용할 수 없는 스레드 지원 라이브러리가 포함되어 있다.

TR1은 다음을 포함한다.


  • 참조 래퍼: 참조를 알고리즘이나 함수에 값 대신 전달할 수 있도록 해 주는 기능.
  • 스마트 포인터: 객체의 수명 관리를 자동화하는 스마트 포인터.

2. 1. 참조 래퍼

참조를 알고리즘이나 함수에 값 대신 전달할 수 있도록 해 주는 기능이다. Boost.Ref 라이브러리를 기반으로 한다.[1] 래퍼 참조는 `reference_wrapper` 템플릿 클래스의 인스턴스에서 가져온다. 래퍼 참조는 C++ 언어의 일반 참조('&')와 유사하다. 모든 객체에서 래퍼 참조를 얻으려면 `ref` 템플릿 클래스를 사용하고, 상수 참조의 경우에는 `cref`를 사용한다.

래퍼 참조는 특히 템플릿 함수에 유용하며, 인수 추론이 참조를 추론하지 못하는 경우(예: 인수를 전달하는 경우)에 사용된다.

```cpp

#include

#include

void f( int &r ) { ++r; }

template< class Funct, class Arg >

void g( Funct f, Arg t )

{

f(t);

}

int main()

{

int i = 0;

g( f, i ); // 'g< void(int &r), int >' 이 인스턴스화 됨

std::cout << i << "\n"; // 출력: 0

g( f, std::tr1::ref(i) ); // 'g< void(int &r), reference_wrapper >' 이 인스턴스화 됨

std::cout << i << "\n"; // 출력: 1

}

```

`std::tr1::reference_wrapper`는 함수나 알고리즘에 객체를 값으로 전달하는 대신 참조로 전달할 수 있게 해준다. `std::tr1::ref`와 `std::tr1::cref`를 사용하여 참조 래퍼를 생성할 수 있다.

2. 2. 스마트 포인터

`std::tr1::shared_ptr`와 `std::tr1::weak_ptr`는 객체의 수명 관리를 자동화하는 스마트 포인터이다. 부스트 스마트 포인터 라이브러리를 기반으로 한다.[1] `shared_ptr`는 참조 카운트를 추적하여 더 이상 참조되지 않는 객체를 자동으로 삭제하며, `weak_ptr`는 `shared_ptr`가 가리키는 객체에 대한 약한 참조를 제공하여 순환 참조 문제를 방지한다. 이들은 `<memory>` 헤더에 추가되어 보다 안전하게 메모리 관리를 수행할 수 있도록 돕는다.[1]

3. 함수 객체

TR1은 `<functional>` 헤더 파일에 `function`, `bind`, `result_of`, `mem_fn` 네 가지 모듈을 추가하여 함수형 프로그래밍을 지원한다. 이들은 각각 함수 객체와 관련된 다양한 기능을 제공한다.


  • 다형성 함수 래퍼 (`function`): 지정된 함수 호출 시그니처를 가진 함수 포인터, 멤버 함수 포인터, 함수 객체 등을 저장하며, Boost.Function[3]을 기반으로 한다.
  • 함수 객체 바인더 (`bind`): 매개변수를 함수 객체에 바인딩하고 함수 조합을 허용하며, Boost Bind 라이브러리를 기반으로 한다.[4]
  • 함수 반환 타입 (`result_of`): 호출 표현식의 타입을 결정한다.
  • 멤버 함수 (`mem_fn`): 멤버 포인터를 함수에 대한 포인터처럼 함수 객체로 처리하도록 허용하며, Boost Mem Fn 라이브러리를 기반으로 한다.[5]

3. 1. 다형성 함수 래퍼

`std::tr1::function`은 함수 포인터, 멤버 함수 포인터, 함수 객체 등 다양한 호출 가능 객체를 저장하고 호출할 수 있는 다형성 함수 래퍼이다. Boost.Function 라이브러리를 기반으로 한다.

3. 2. 함수 객체 바인더

`std::tr1::bind`는 함수 객체의 인수를 특정 값이나 다른 함수 객체에 바인딩하여 새로운 함수 객체를 생성할 수 있게 해준다. 이는 표준 `std::bind1st`와 `std::bind2nd`를 일반화한 것으로,[1] Boost Bind 라이브러리를 기반으로 한다.[1]

3. 3. 함수 반환 타입

`std::tr1::result_of`는 함수 호출 표현식의 반환 타입을 결정하는 데 사용되는 기구이다.[1] 부스트를 기반으로 한다.[1]

3. 4. 멤버 함수

`std::tr1::mem_fn`은 멤버 함수 포인터를 함수 객체처럼 사용할 수 있게 해주는 기능이다. 이는 표준 `std::mem_fun`과 `std::mem_fun_ref`를 개선한 것으로,[1] Boost Mem Fn 라이브러리를 기반으로 한다.[1]

4. 메타프로그래밍 및 타입 특성

TR1은 `<type_traits>` 헤더 파일을 통해 컴파일 타임에 자료형 정보를 질의하고 조작할 수 있는 다양한 메타프로그래밍 도구들을 제공한다. 이는 Boost Type Traits 라이브러리를 기반으로 한다.[6] `std::tr1::is_pod`, `std::tr1::has_virtual_destructor` (C++11에서는 `is_virtual_destructible`로 변경), `std::tr1::remove_extent` 등이 제공된다. 이러한 기능들은 데이터 형식에 대한 쿼리를 쉽게 하여 메타 프로그래밍을 지원한다.

최근 드래프트인 n3225에서는 `<type_traits>`에서 정의되는 `has_*`가 `is_*`로 변경되었다.[6]

5. 수치 계산

TR1은 ``/`` 헤더 파일에 여러 수학 특수 함수들을 추가했다.[1] 여기에는 베타, 르장드르 등이 포함되며, 이러한 함수는 공학과 과학 분야의 프로그래머에게 유용하다.

TR1에 정의된 23개의 특수 함수는 다음과 같다.[1]

함수 이름함수 원형수학적 표현
연관 라게르 다항식double assoc_laguerre( unsigned n, unsigned m, double x ) ;{L_n}^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n+m}(x), \text{ for } x \ge 0
연관 르장드르 다항식double assoc_legendre( unsigned l, unsigned m, double x ) ;{P_l}^m(x) = (1-x^2)^{m/2} \frac{d^m}{dx^m} P_l(x), \text{ for } x \ge 0
베타 함수double beta( double x, double y ) ;\Beta(x,y)=\frac{\Gamma(x) \Gamma(y)}{\Gamma(x+y)}
제1종 완전 타원 적분double comp_ellint_1( double k ) ;K(k) = F\left(k, \textstyle \frac{\pi}{2}\right) = \int_0^{\frac{\pi}{2}} \frac{d\theta}{\sqrt{1 - k^2 \sin^2 \theta}}
제2종 완전 타원 적분double comp_ellint_2( double k ) ;E\left(k, \textstyle \frac{\pi}{2}\right) = \int_0^{\frac{\pi}{2}} \sqrt{1 - k^2 \sin^2 \theta}\; d\theta
제3종 완전 타원 적분double comp_ellint_3( double k, double nu ) ;\Pi\left(\nu, k, \textstyle \frac{\pi}{2}\right) = \int_0^{\frac{\pi}{2}} \frac{d\theta}{(1 - \nu \sin^2 \theta)\sqrt{1 - k^2 \sin^2 \theta}}
합류형 초기하 함수double conf_hyperg( double a, double c, double x ) ;F(a, c, x) = \frac{\Gamma(c)}{\Gamma(a)} \sum_{n = 0}^\infty \frac{\Gamma(a + n) x^n}{\Gamma(c + n) n!}
수정 원통형 베셀 함수double cyl_bessel_i( double nu, double x ) ;I_\nu(x) = i^{-\nu} J_\nu(ix) = \sum_{k = 0}^\infty \frac{(x/2)^{\nu + 2k}}{k! \; \Gamma(\nu + k + 1)}, \text{ for } x \ge 0
제1종 원통형 베셀 함수double cyl_bessel_j( double nu, double x ) ;J_\nu(x) = \sum_{k = 0}^\infty \frac{(-1)^k \; (x/2)^{\nu + 2k}}{k! \; \Gamma(\nu + k + 1)}, \text{ for } x \ge 0
불규칙 수정 원통형 베셀 함수double cyl_bessel_k( double nu, double x ) ;\begin{align}
원통형 노이만 함수double cyl_neumann( double nu, double x ) ;
제1종 불완전 타원 적분double ellint_1( double k, double phi ) ;F(k,\phi)=\int_0^\phi\frac{d\theta}{\sqrt{1-k^2\sin^2\theta}}, \text{ for } \left>k\right| \le 1
제2종 불완전 타원 적분double ellint_2( double k, double phi ) ;\displaystyle E(k,\phi)=\int_0^\phi\sqrt{1-k^2\sin^2\theta}d\theta, \text{ for } \left>k\right| \le 1
제3종 불완전 타원 적분double ellint_3( double k, double nu, double phi ) ;\Pi(k,\nu,\phi)=\int_0^\phi\frac{d\theta}{\left(1-\nu\sin^2\theta\right)\sqrt{1-k^2\sin^2\theta}}, \text{ for } \left>k\right| \le 1
지수 적분double expint( double x ) ; \mbox{E}i(x)=-\int_{-x}^{\infty} \frac{e^{-t}}{t}\, dt
에르미트 다항식double hermite( unsigned n, double x ) ;H_n(x)=(-1)^n e^{x^2}\frac{d^n}{dx^n}e^{-x^2}\,\!
초기하 급수double hyperg( double a, double b, double c, double x ) ;F(a,b,c,x)=\frac{\Gamma(c)}{\Gamma(a)\Gamma(b)}\sum_{n = 0}^\infty\frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)}\frac{x^n}{n!}
라게르 다항식double laguerre( unsigned n, double x ) ;L_n(x)=\frac{e^x}{n!}\frac{d^n}{dx^n}\left(x^n e^{-x}\right), \text{ for } x \ge 0
르장드르 다항식double legendre( unsigned l, double x ) ;P_l(x) = {1 \over 2^l l!} {d^l \over dx^l } (x^2 -1)^l, \text{ for } \left>x\right| \le 1
리만 제타 함수double riemann_zeta( double x ) ;
제1종 구면 베셀 함수double sph_bessel( unsigned n, double x ) ;j_n(x) = \sqrt{\frac{\pi}{2x}} J_{n+1/2}(x), \text{ for } x \ge 0
구면 연관 르장드르 함수double sph_legendre( unsigned l, unsigned m, double theta ) ; Y_{l}^{m}(\theta, 0) \text{ where } Y_{l}^{m}(\theta, \phi) = (-1)^{m}\left[\frac{(2l+1)}{4\pi}\frac{(l-m)!}{(l+m)!}\right]^{1 \over 2} P_{l}^{m}(\cos \theta)e^{\mathrm{i}m\phi}, \text{ for }>m| \leq l
구면 노이만 함수double sph_neumann( unsigned n, double x ) ;n_n(x) = \left(\frac{\pi}{2x}\right)^{\frac{1}{2}}N_{n+\frac{1}{2}}(x), \text{ for } x \ge 0



각 함수는 `float`형과 `long double`형에 대해 작동하는 함수를 제공하기 위해 함수 이름에 '''f''' 또는 '''l''' 접미사를 추가하여 사용할 수 있다.[1]

5. 1. 의사 난수 생성

TR1은 `` 헤더 파일을 통해 다양한 확률 분포와 의사 난수 생성기 엔진을 제공한다. 이는 Boost Random Number Library를 기반으로 한다.[1] `std::tr1::variate_generator`, `std::tr1::mersenne_twister`, `std::tr1::poisson_distribution` 등이 제공된다.[1]

5. 2. 수학 특수 함수

TR1은 ``/`` 헤더 파일에 여러 수학 특수 함수들을 추가했다. 여기에는 베타, 르장드르 등이 포함된다.[1] 이러한 함수는 공학과 과학 분야의 프로그래머에게 유용하다.

TR1에 정의된 23개의 특수 함수는 다음과 같다.[1]

함수 이름함수 원형수학적 표현
연관 라게르 다항식double assoc_laguerre( unsigned n, unsigned m, double x ) ;{L_n}^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n+m}(x), \text{ for } x \ge 0
연관 르장드르 다항식double assoc_legendre( unsigned l, unsigned m, double x ) ;{P_l}^m(x) = (1-x^2)^{m/2} \frac{d^m}{dx^m} P_l(x), \text{ for } x \ge 0
베타 함수double beta( double x, double y ) ;\Beta(x,y)=\frac{\Gamma(x) \Gamma(y)}{\Gamma(x+y)}
제1종 완전 타원 적분double comp_ellint_1( double k ) ;K(k) = F\left(k, \textstyle \frac{\pi}{2}\right) = \int_0^{\frac{\pi}{2}} \frac{d\theta}{\sqrt{1 - k^2 \sin^2 \theta}}
제2종 완전 타원 적분double comp_ellint_2( double k ) ;E\left(k, \textstyle \frac{\pi}{2}\right) = \int_0^{\frac{\pi}{2}} \sqrt{1 - k^2 \sin^2 \theta}\; d\theta
제3종 완전 타원 적분double comp_ellint_3( double k, double nu ) ;\Pi\left(\nu, k, \textstyle \frac{\pi}{2}\right) = \int_0^{\frac{\pi}{2}} \frac{d\theta}{(1 - \nu \sin^2 \theta)\sqrt{1 - k^2 \sin^2 \theta}}
합류형 초기하 함수double conf_hyperg( double a, double c, double x ) ;F(a, c, x) = \frac{\Gamma(c)}{\Gamma(a)} \sum_{n = 0}^\infty \frac{\Gamma(a + n) x^n}{\Gamma(c + n) n!}
수정 원통형 베셀 함수double cyl_bessel_i( double nu, double x ) ;I_\nu(x) = i^{-\nu} J_\nu(ix) = \sum_{k = 0}^\infty \frac{(x/2)^{\nu + 2k}}{k! \; \Gamma(\nu + k + 1)}, \text{ for } x \ge 0
제1종 원통형 베셀 함수double cyl_bessel_j( double nu, double x ) ;J_\nu(x) = \sum_{k = 0}^\infty \frac{(-1)^k \; (x/2)^{\nu + 2k}}{k! \; \Gamma(\nu + k + 1)}, \text{ for } x \ge 0
불규칙 수정 원통형 베셀 함수double cyl_bessel_k( double nu, double x ) ;\begin{align}
원통형 노이만 함수double cyl_neumann( double nu, double x ) ;
제1종 불완전 타원 적분double ellint_1( double k, double phi ) ;F(k,\phi)=\int_0^\phi\frac{d\theta}{\sqrt{1-k^2\sin^2\theta}}, \text{ for } \left>k\right| \le 1
제2종 불완전 타원 적분double ellint_2( double k, double phi ) ;\displaystyle E(k,\phi)=\int_0^\phi\sqrt{1-k^2\sin^2\theta}d\theta, \text{ for } \left>k\right| \le 1
제3종 불완전 타원 적분double ellint_3( double k, double nu, double phi ) ;\Pi(k,\nu,\phi)=\int_0^\phi\frac{d\theta}{\left(1-\nu\sin^2\theta\right)\sqrt{1-k^2\sin^2\theta}}, \text{ for } \left>k\right| \le 1
지수 적분double expint( double x ) ; \mbox{E}i(x)=-\int_{-x}^{\infty} \frac{e^{-t}}{t}\, dt
에르미트 다항식double hermite( unsigned n, double x ) ;H_n(x)=(-1)^n e^{x^2}\frac{d^n}{dx^n}e^{-x^2}\,\!
초기하 급수double hyperg( double a, double b, double c, double x ) ;F(a,b,c,x)=\frac{\Gamma(c)}{\Gamma(a)\Gamma(b)}\sum_{n = 0}^\infty\frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)}\frac{x^n}{n!}
라게르 다항식double laguerre( unsigned n, double x ) ;L_n(x)=\frac{e^x}{n!}\frac{d^n}{dx^n}\left(x^n e^{-x}\right), \text{ for } x \ge 0
르장드르 다항식double legendre( unsigned l, double x ) ;P_l(x) = {1 \over 2^l l!} {d^l \over dx^l } (x^2 -1)^l, \text{ for } \left>x\right| \le 1
리만 제타 함수double riemann_zeta( double x ) ;
제1종 구면 베셀 함수double sph_bessel( unsigned n, double x ) ;j_n(x) = \sqrt{\frac{\pi}{2x}} J_{n+1/2}(x), \text{ for } x \ge 0
구면 연관 르장드르 함수double sph_legendre( unsigned l, unsigned m, double theta ) ; Y_{l}^{m}(\theta, 0) \text{ where } Y_{l}^{m}(\theta, \phi) = (-1)^{m}\left[\frac{(2l+1)}{4\pi}\frac{(l-m)!}{(l+m)!}\right]^{1 \over 2} P_{l}^{m}(\cos \theta)e^{\mathrm{i}m\phi}, \text{ for }>m| \leq l
구면 노이만 함수double sph_neumann( unsigned n, double x ) ;n_n(x) = \left(\frac{\pi}{2x}\right)^{\frac{1}{2}}N_{n+\frac{1}{2}}(x), \text{ for } x \ge 0



각 함수는 `float`형과 `long double`형에 대해 작동하는 함수를 제공하기 위해 함수 이름에 '''f''' 또는 '''l''' 접미사를 추가하여 사용할 수 있다.[1]

6. 컨테이너

TR1은 여러 컨테이너를 제공한다.


  • 튜플: `` 헤더 파일의 `std::tr1::tuple`은 `std::pair`를 확장하여 여러 자료형을 묶어 객체로 저장한다.[7] Boost Tuple 라이브러리 기반이다.
  • 고정 크기 배열: `` 헤더 파일의 `std::tr1::array`는 Boost Array 라이브러리 기반으로,[8] 크기가 고정된 배열을 나타내며, `std::vector`와 달리 동적 크기 변경이 불가능하다.[8]
  • 해시 테이블: ``, `` 헤더 파일의 `std::tr1::unordered_set`, `std::tr1::unordered_multiset`, `std::tr1::unordered_map`, `std::tr1::unordered_multimap`은 정렬되지 않은 요소를 가지며, `set_union`, `set_intersection`, `set_difference`, `set_symmetric_difference`, `includes`와 같은 표준 라이브러리 함수와 함께 사용할 수 없다.[1] 일반적으로 상수 시간 조회를 제공하지만, 최악의 경우 선형 시간이 걸릴 수 있다.[1] `unordered_set`, `unordered_map` 등의 이름은 표준 `set`, `map`과 달리 정렬된 요소 접근이 불가능함을 나타낸다.[1]

6. 1. 튜플

TR1은 `` 헤더 파일을 통해 `std::tr1::tuple`을 제공한다. 이는 `std::pair`를 확장한 것으로, 여러 자료형을 묶어 하나의 객체로 저장할 수 있게 해준다.[7] `std::tr1::tuple`은 Boost Tuple 라이브러리를 기반으로 한다.

6. 2. 고정 크기 배열

TR1은 `` 헤더 파일을 통해 `std::tr1::array`를 제공한다. 이는 Boost Array 라이브러리를 기반으로 하며,[8] 크기가 고정된 배열을 나타낸다. 표준 `std::vector`와 달리 동적으로 크기를 변경할 수 없다.[8]

6. 3. 해시 테이블

TR1은 ``과 `` 헤더 파일을 통해 `std::tr1::unordered_set`, `std::tr1::unordered_multiset`, `std::tr1::unordered_map`, `std::tr1::unordered_multimap`을 제공한다. 이들은 표준 `set`, `multiset`, `map`, `multimap`과 달리 정렬되지 않은 요소를 가지며, `set_union`, `set_intersection`, `set_difference`, `set_symmetric_difference`, `includes`와 같은 표준 라이브러리 함수와 함께 사용할 수 없다.[1]

모든 해시 테이블과 마찬가지로, 일반적으로 요소의 상수 시간 조회를 제공하지만, 최악의 경우 컨테이너 크기에 비례하여 선형 시간이 걸릴 수 있다.[1]

`unordered_set`, `unordered_map`이 `hash_set` (SGI 버전 STL에 포함된 라이브러리) 등의 이름이 아닌 이유는, 표준 `set`, `map`은 이터레이터를 사용하여 정렬된 요소를 접근할 수 있는 반면, `unordered_set`, `unordered_map`은 불가능하다는 것을 나타내기 위함이다. 즉, 구현이 아닌 인터페이스(사용법)에서 이름을 따온 것이다.[1]

7. 정규 표현식

TR1은 `` 헤더 파일을 통해 정규 표현식을 사용한 패턴 매칭 기능을 제공한다.[9] Boost Regex 라이브러리를 기반으로 하며, `std::tr1::regex`, `std::tr1::regex_match`, `std::tr1::regex_search`, `std::tr1::regex_replace` 등을 제공한다.

8. C 호환 라이브러리

C++(C++)는 C 언어와 호환되도록 설계되었지만, 표준이 달라 C의 엄격한 상위 집합은 아니다. TR1은 <complex>, <locale>, <cmath> 등 C++ 라이브러리의 다양한 헤더에 추가 기능을 제공하여 이러한 차이점을 해결하려고 시도한다. 이러한 변경 사항은 C++를 C99 버전의 C 표준에 더 가깝게 만들지만, C99의 모든 부분이 TR1에 포함된 것은 아니다.

9. C++ Technical Report 2 (TR2)

TR1 이후에 제안된 C++ 표준 라이브러리 확장이었으나, 정식으로 출판되지는 않았다.[16] 2005년에 TR2에 대한 제안 요청이 있었으며, 유니코드, XML/HTML, 네트워킹, 그리고 초보 프로그래머의 사용 편의성에 특별한 관심이 쏟아졌다.

TR2에서 제안된 일부 기능은 다음과 같다.


  • 스레드
  • Asio C++ 라이브러리 (네트워킹)
  • 시그널/슬롯
  • 파일 시스템 라이브러리 - Boost 파일 시스템 라이브러리를 기반으로 경로, 파일 및 디렉터리를 쿼리/조작
  • Boost Any 라이브러리
  • 어휘 변환 라이브러리
  • 새로운 문자열 알고리즘
  • TR2의 숫자 라이브러리에 대한 대수적 속성의 보다 완전한 분류
  • TR2를 위한 연관 컨테이너에 이종 비교 조회


TR2 제안 요청이 발행된 후, ISO 절차가 변경되어 TR2는 더 이상 진행되지 않게 되었다. 대신 C++에 대한 개선 사항은 여러 기술 사양서에 게시될 예정이다. 위에 나열된 일부 제안은 이미 C++ 표준 또는 기술 사양서의 초안 버전에 포함되어 있다.

참조

[1] 웹사이트 ref - 1.72.0 https://www.boost.or[...]
[2] 웹사이트 Boost.SmartPtr: The Smart Pointer Library - 1.72.0 https://www.boost.or[...]
[3] 웹사이트 Chapter 16. Boost.Function - 1.72.0 https://www.boost.or[...]
[4] 웹사이트 Chapter 1. Boost.Bind - 1.72.0 https://www.boost.or[...]
[5] 웹사이트 Chapter 1. Boost.Member Function - 1.72.0 https://www.boost.or[...]
[6] 웹사이트 Chapter 1. Boost.TypeTraits - 1.37.0 https://www.boost.or[...]
[7] 웹사이트 The Boost Tuple Library – Boost 1.48.0 https://web.archive.[...] 2006-05-27
[8] 웹사이트 Chapter 5. Boost.Array - 1.72.0 https://www.boost.or[...]
[9] 웹사이트 Boost.Regex - 1.36.0 https://www.boost.or[...]
[10] 간행물 ISO/IEC TR 19768:2007 http://www.iso.org/i[...]
[11] 문서 http://www.open-std.[...]
[12] 웹사이트 Visual C++ 2008 Feature Pack Release http://www.microsoft[...] 2009-08-02
[13] 웹사이트 標準 C++ ライブラリ TR1 拡張リファレンス http://msdn.microsof[...] 2009-08-29
[14] 웹사이트 The GNU C++ Library Documentation Chapter 1. Status http://gcc.gnu.org/o[...] 2009-08-29
[15] 웹사이트 Boost Libraries Chapter 21. Boost.TR1 http://www.boost.org[...] 2009-08-29
[16] 문서 TR2 call for proposals http://www.open-std.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com