8

gccでコードをコンパイルすると非常に奇妙なエラーが発生しました。それはstd::function存在しないことを教えてくれます。

次のコードでエラーを再現できます。

#include <functional>
#include <stdio.h>

void test(){ printf ("test"); }

int main() {
    std::function<void()> f;
    f = test;
    f();
}

gcc(cygwinから)を実行した場合:(エラーメッセージはドイツ語だったので、翻訳しました。英語のgccでは音が異なる場合があります)

$ gcc test.cpp
test.cpp: in function "int main(): 
test.cpp:7:3: Error: "function" is not an element of "std"« 
test.cpp:7:25: Error: "f" was not defined in this scope

MSVCを使用すると、正常にコンパイルされました。コードで何が間違っているのか教えてください。

ヨハネス

4

2 に答える 2

18

次のようにコンパイルします。

g++ test.cpp -std=c++0x

-std=c++0xC++11 機能を使用しているため必要ですが、それ以外の場合g++ test.cppは十分です。

GCC が最新バージョンであることを確認してください。バージョンは次のように確認できます。

g++ --version
于 2012-06-13T15:32:04.280 に答える
3

C++モードとモードでコンパイルする必要がありC++11ます。g++したがって、-stdフラグを に設定する必要がありますc++0x

g++ test.cpp -std=c++0x

-std=c++11gcc 4.7 以降でも使用できます。

于 2012-06-13T15:32:04.927 に答える