2013-07-19 2 views
0

우리는 그것은 GCC로 컴파일하여 잘 작동 TR1로 작성된 일부 코드, 예컨대 :VS2010에서 C++ TR1을 사용할 수 있습니까?

#include <tr1/functional> 
... 
typedef std::tr1::function<void(int)> MyFunction; 
.. 

을 가지고 있지만 VS2010에 실패했습니다.

코드에 compatibility issue with C++11이 있으므로 C++ 11로 간단히 전환 할 수 없습니다. 나는 코드를 향상시키기를 원하지 않는다.

TR1을 지원하기 위해 VS2010 용으로 다운로드해야하는 패키지가 있습니까?

답변

3

VS 2010은 TR1을 즉시 지원합니다. 그래도 파일 이름 앞에 tr1/이 필요하지 않습니다. TR1 지금까지 TR1과 부합로, 헤더 파일 이름을 지정하지 않는

#include <functional> 

typedef std::tr1::function<void(int)> MyFunction; 

참고 간다, 둘 중 하나는 다른과 거의 동일하다. 당신은 직접 VS 2010 년 <functional>을 사용할 수 있습니다

3

는 그래서

#include <functional> 
... 
typedef std::function<void(int)> MyFunction; 
.. 

VS 2010 일반적인 std 네임 스페이스에 std::tr1 이전에 무엇 이동 싶지만, VS 2008 여전히 std::tr1를 사용합니다. 즉, 필요하면 tr1 네임 스페이스를 명시 적으로 사용할 수 있어야합니다.

#include <functional> 
... 
typedef std::tr1::function<void(int)> MyFunction; 
.. 

도 유효합니다 (포함 된 헤더 파일에는 tr1/이 포함되지 않음).

관련 링크 :

What are differences between std, tr1 and boost (as namespaces and/or libraries)?

Why does VS2010 maintain the std::tr1 namespace?

+0

감사합니다. 슬프게도 나는 두 가지 대답을 받아 들일 수 없다. – Deqing

관련 문제