2015-04-29 10 views
0

Так что я пытаюсь использовать std::any_of() функцию, но C++ Builder 6 говорит, что есть ошибка:E2316 «any_of» не является членом «Std»

[C++ Error] Unit1.cpp(93): E2316 'any_of' is not a member of 'std'


Но я #include <algorithm> в моем Unit1.h

#ifndef Unit1H 
#define Unit1H 
//--------------------------------------------------------------------------- 
#include <Classes.hpp> 
#include <Controls.hpp> 
#include <StdCtrls.hpp> 
#include <Forms.hpp> 
#include <ExtCtrls.hpp> 
#include <set> 
#include <algorithm> // std::set_union, std::sort, etc 
#include <vector>  // std::vector 
#include <math.h> 
//-------------------------------------------------------------------------- 

Мой unit1.cpp:

void __fastcall TForm1::Button7Click(TObject *Sender) 
{ 
     int el = StrToInt(LabeledEdit1->Text); 
     if (std::any_of(A.begin(), A.end(), (*MyIteratorA==el))){ 
       ShowMessage("true"); 
     }else{ 
       ShowMessage("false"); 
     } 

} 

Это странно, потому что я использую такие е как std::set_union(), std::set_intersection(), std::set_difference() в той же программе и все работало нормально до std::any_of.

Извините за плохой английский.

+8

any_of is C++ 11 (и новее) вы скомпилировали с включенным C++ 11? (что-то вроде -std = C++ 11 или подобное) – Borgleader

+2

Боковое примечание: «__fastcall» выглядит древним –

+1

@ DieterLücking: соглашение о вызове Borland '__fastcall' совместимо с соглашением о вызове Delphi' register', которое, конечно же, не является «древним», , Возможно, вы думаете о '' __fastcall'' (который является '__msfastcall' в Borland). –

ответ

3

C++ Builder 32-разрядный не совместим с C++ 11. Для всех функций C++ 11 вам необходимо использовать 64-разрядную версию.

std::set_union, std::set_intersection и std::set_difference не являются C++ 11 функциями, поэтому они работают.

+2

C++ Builder 6 не поддерживает 64-битную разработку (и, следовательно, не поддерживает C++ 11). Это было добавлено в C++ Builder XE3. –

Смежные вопросы