2014-01-27 2 views
4

나는 표준을 구현하기 위해 노력하고있어 :: 바인드를 쉽게 예에서 사용하는 방법 :이 내가 무엇을 얻을 컴파일 할 때 그러나표준 : 바인드

#include <functional> 
#include <iostream> 
using namespace std; 
using namespace std::placeholders; 
int multiply(int a, int b) 
{ 
    return a * b; 
} 
int main() 
{ 
    auto f = bind(multiply, 5, _1); 
    for (int i = 0; i < 10; i++) 
    { 
     cout << "5 * " << i << " = " << f(i) << endl; 
    } 
    return 0; 
} 

을 :

test.cpp:5: error: ‘placeholders’ is not a namespace-name 
test.cpp:5: error: expected namespace-name before ‘;’ token 
test.cpp: In function ‘int main()’: 
test.cpp:14: error: ISO C++ forbids declaration of ‘f’ with no type 
test.cpp:14: error: ‘_1’ was not declared in this scope 
test.cpp:14: error: ‘bind’ was not declared in this scope 
test.cpp:17: error: ‘f’ cannot be used as a function 

는 주어진 예는

+0

어떤 컴파일러를 사용하고 있습니까? std :: bind는 C++ 11에서 도입되었습니다. 귀하의 컴파일러가 C++ 11을 지원하지 않을 수도 있고 올바른 옵션을 컴파일러에 전달하지 않을 수도 있습니다. – bashrc

답변

4

귀하의 코드 길이로 잘 컴파일 당신의 도움에 미리 감사 컴파일 오류 OO에게 어색 반환 할 때 -std=c++11 스위치가 gcc에 전달, 및 Visual Studio 여기에 2013 년

11 월 CTP 컴파일러 릴리스 될 때 코드에 대한 샘플 명령 행 편집의 :

g++-4.8 -std=c++11 -O2 -Wall -pedantic main.cpp 

옵션에 대해 읽어 How to use g++ in terminal in mac? 문의 - 호출 xcode 또는 직접.

+0

저는 Mac에서 작업하고 2013 년 여름에 C++ 컴파일러를 다운로드 했으므로 작동하지 않는 이유가 없습니다 ... –

+0

여름 2013 충분하지 않습니다. [2013 년 11 월 CTP 릴리스] (http://www.microsoft.com/en-au/download/details.aspx?id=41151)를 다운로드하여 Visual Studio의 프로젝트 설정에서 도구 집합으로 선택해야합니다. 귀하의 프로젝트. – mockinterface