0

次のコードは、WINDOWS と LINUX では問題なく実行できますが、MAC では失敗します。

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);
}

開発プラットフォームは Xcode 4、コンパイラは Clang LLVM 1.0 です。また、コンパイラが新しい C++ 標準 c++0x を使用していることも確認します。エラー メッセージは次のとおりです。

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

1 に答える 1

1

placeholdersClang LLVM 1.0 はかなり古いようで、2003 年のものです。そのため、インストールした標準ライブラリはおそらく C++03 標準ライブラリであり、とはありませんbind<array>たとえば、それを確認するために、新しい C++11 ヘッダーを含めることを試みることができます。

私が正しければ、コンパイラを更新してください:-)

于 2013-06-13T14:36:09.703 に答える