2012-05-01 5 views
8

Visual Studio 2010의 tr1 기능을 사용하려면 어떻게해야합니까? 보다 구체적인 경우에는 std :: tr1 :: function이 필요합니다. 나는 #include <functional> 잘 포함하면서, 누락으로보고 #include <tr1/functional> 포함했지만, 나는이 설정 한 경우 :tr1을 Visual Studio 2010 (tr1 :: function)과 함께 사용하는 방법?

std::tr1::function<void(void)> callback; 

를 내가 얻을 : 나는 부스트를 사용하는 경우이 프로젝트를 위해 잘 작동하지만

1>d:\marmalade\projects\core\src\button.h(21): error C3083: 'tr1': the symbol to the left of a '::' must be a type 
1>d:\marmalade\projects\core\src\button.h(21): error C2039: 'function' : is not a member of '_STL' 
1>d:\marmalade\projects\core\src\button.h(21): error C2143: syntax error : missing ';' before '<' 
1>d:\marmalade\projects\core\src\button.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>d:\marmalade\projects\core\src\button.h(21): error C2238: unexpected token(s) preceding ';' 

, 특정 프레임 워크를 사용하기 때문에 Visual Studio tr1 버전이 필요합니다.

바와 같이, 제안 된 TR1을 건너 뛰는, 여전히 같은 결과를 반환 : 기본적으로 사용 C++ 11

std::function<void(void)> callback; 

1>d:\marmalade\projects\core\src\button.h(20): error C2039: 'function' : is not a member of '_STL' 
1>d:\marmalade\projects\core\src\button.h(20): error C2143: syntax error : missing ';' before '<' 
1>d:\marmalade\projects\core\src\button.h(20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>d:\marmalade\projects\core\src\button.h(20): error C2238: unexpected token(s) preceding ';' 
+4

'tr1'은 C++ 표준에 제안 된 추가 목록 인 [기술 보고서 ​​1] (http://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1)을 나타냅니다. 일단 제안이 받아 들여지면,'tr1' 지정은 쓸모 없게되었다. –

+0

당신은''을 포함 시켰습니까? –

+0

예, 포함 시켰습니다. – Speed

답변

8

귀하의 의견과 this page을 바탕으로 마멀레이드는 그 자체의 STL 구현과 함께 제공되는 것으로 생각됩니다. This page은 2005 년에 출시 된 TR1을 지원하지 않는 STLPort의 버전을 사용한다는 것을 확인합니다. 옵션은 다음과 같습니다

1) 복사/자신
2)
3) Download a newer version of STLPort하지 않는 물품. 지난 2 년 동안 업데이트 된 것 같지 않으므로 C++ 11은 아니지만 functional이라는 언급은 있지만 std 또는 std::tr1 네임 스페이스에 있는지 여부는 확실하지 않습니다. 그러나 이것은 Marmalade에서는 작동하지 않을 수 있으므로 백업을하고 조심하십시오.

+1

그냥 번들로 생각합니다. STLPort (소스 (http://www.madewithmarmalade.com/devnet/code-community)) ... 끔찍해. – ildjarn

+0

실제로, 그것은 무섭다. ( – Speed

+2

@Speed ​​: 업데이트 된 답변, STLPort의 최신 버전 _ 가능하거나 도와 주시겠습니까? –

2

비주얼 스튜디오 2010 배를 (또는 적어도 어떤 것이 구현된다). std::function<void(void)>을 사용해야합니다.

전체 테이블을 보려면 see here.

제쳐두고 : 당신은 요즘 TR1에서 아무것도 사용해서는 안됩니다. 새로운 표준에 통합되었습니다.

+0

그럼에도 불구하고, 나는 여전히 똑같은 오류가 발생합니다.'std :: function 콜백; '오류'C2039 : 'function': '_STL'의 멤버가 아닙니다. – Speed

+1

@Speed ​​이것은 이상하게 보입니다. 이상한'정의 '에 대한 grep입니다. – pmr