2017-09-28 34 views
-1

私はstd::for_each_nループ用の小さなコードを持っています。'for_each_n'はC++の 'std'のメンバーではありません。

g++ -std=c++1z -O2 -Wall -pedantic -pthread main.cpp && ./a.out 

しかし、コンパイラ「『for_each_n』が 『STD』のメンバではありません」というエラーを与える:私は、以下のコマンドを使用して作り付けのColiruコンパイラGCC C++ 17上でそれを実行してみました。

私のコードはcppreferenceからコピーされています。

#include <algorithm> 
#include <iostream> 
#include <vector> 

int main() 
{ 
    std::vector<int> ns{1, 2, 3, 4, 5}; 
    for (auto n: ns) std::cout << n << ", "; 
    std::cout << '\n'; 
    std::for_each_n(ns.begin(), 3, [](auto& n){ n *= 2; }); 
    for (auto n: ns) std::cout << n << ", "; 
    std::cout << '\n'; 
} 

なぜ、私にエラーが表示されますか?

+1

あなたは++ 17 cをサポートするコンパイラを実装しないのでしょうか? – user463035818

+0

@ tobi303 http://coliru.stacked-crooked.com/コンパイラ – rsp

+0

を使用しました。この特定の機能はサポートされていますか? – stefaanv

答えて

8

コードに問題はありません。問題はlibstdC++がまだstd::for_each_nをサポートしていないことです。 std::for_eachを定義するheaderを見ると、存在しないことがわかります。あなたはlibcの++へのアクセス権を持っている場合

しかし、official mirrorからそのヘッダがstd::for_each_n

関連する問題