2013-06-13 3 views
0

Les codes suivants peuvent fonctionner très bien dans Windows et LINUX mais échouent dans MAC:Aucun membre nommé « bind » dans l'espace de noms d'erreur std

template <typename T> 
inline bool similar_fun(const std::vector<T> &a, const std::vector<T> &B, T threshold) 
{ 
    using namespace std::placeholders; 

    std::vector<T> differ; 
    std::transform(a.begin(), a.end(), b.begin(), 
     std::back_inserter(differ), std::bind(sub_fun<T>, _1, _2)); 

    return (std::accumulate(differ.begin(), differ.end(), static_cast<T>(0), Norm2<T>()) <= threshold); 
} 

La plate-forme de développement est Xcode 4, et le compilateur est Clang LLVM 1.0 Je fais également que le compilateur utilise le nouveau standard C++ C++ 0x les messages d'erreur sont les suivantes:..

using namespace std::placeholders; *Expect namespace name 
std::bind(sub_fun) *No member named "bind" in namespace std 
+1

Avez-vous inclus explicitement '' ? Parfois, les en-têtes sont implicitement inclus dans certaines plateformes, mais pas dans d'autres. –

+0

@Arne Meritz Merci, j'ai déjà mis le fichier tête. – feelfree

+0

LLVM 1.0? Êtes-vous sûr? Ce compilateur [est daté] (http://llvm.org/releases/) 24 oct. 2003 –

Répondre

1

Clang LLVM 1.0 semble assez vieux, il est de 2003, de sorte que la bibliothèque standard vous avez installé probablement une bibliothèque standard C++ 03 qui n'a pas placeholders et bind. Vous pouvez essayer d'inclure de nouveaux en-têtes C++ 11, par ex. <array> pour le confirmer.

Si je suis à droite, juste mettre à jour votre compilateur :-)

+0

Merci, et pourriez-vous me faire savoir comment mettre à jour le compilateur? Vous avez raison et je ne peux pas compiler si le fichier de tête est inclus. – feelfree

+0

Euh, je n'ai pas d'expérience avec XCode, LLVM et MAC. Mais un rapide googling m'a dit que la mise à jour xcode devrait être possible à partir de l'App Store: http://stackoverflow.com/questions/14823519/xcode-update-from-4-5-1-to-4-6 –

+0

Il y a aussi possibilités d'obtenir des versions plus récentes de Clang que celle incluse dans le dernier XCode: http://stackoverflow.com/questions/8674546/how-to-update-llvm-clang-on-mac-osx –

Questions connexes