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
Avez-vous inclus explicitement ''? Parfois, les en-têtes sont implicitement inclus dans certaines plateformes, mais pas dans d'autres. –
@Arne Meritz Merci, j'ai déjà mis le fichier tête. – feelfree
LLVM 1.0? Êtes-vous sûr? Ce compilateur [est daté] (http://llvm.org/releases/) 24 oct. 2003 –