6
私は今オープンソースの画像処理プロジェクトolenaをコンパイルしています。これは素晴らしい画像処理ライブラリであり、私はそれをLinux(4.6.3)用にコンパイルに成功しました。私はWindowsに慣れているので、私も、私はそれをコンパイルするときしかし、私はC2064エラーメッセージ持ちのVisual Studio 2010とWindowsでプロジェクトをコンパイルしよう:エラーメッセージに続いてエラーC2064 for Windows
Error 1 error C2064: term does not evaluate to a function taking 0 arguments C:\olena-2.1\olena-2.1\milena\mln\metal\is_a.hh 101
を、私が出てきます
/*!
\internal
\brief "is_a" check.
Check whether T inherits from _CONCEPT_ M.
*/
template <typename T, template <class> class M>
struct is_a : bool_<(
sizeof(internal::helper_is_a_< T, M >::selector(internal::make_<T>::ptr())) //**ERROR**
==
sizeof(internal::yes_) )>
{};
非常に短いコードスニペットですが、どこからエラーが発生するのかわかりません。何か案は?ありがとう。
注:次のようにinteranl::make_<T>::ptr()
の
定義は:
template <typename T>
inline
T*
make_<T>::ptr() // This piece of code is defined to prevent an ICE from g++-2.95.
{
T* tmp;
return tmp;
}
template <typename T>
struct make_
{
static T* ptr();
};
iternal::helper_is_a_
のdefinitonが
template <typename T, template <class> class M>
struct helper_is_a_
{
template<class V>
static yes_ selector(M<V>*);
static no_ selector(...);
};
VS 2010 C++コンパイラは、テンプレートに関してはかなり不備があります。テンプレートのサポートが大幅に改善された新しいバージョンで確認することをお勧めします。 –
コンパイル中の実際の 'is_a'呼び出しとその他すべてを含む完全なエラーメッセージを提供してください。 – Codeguard
bool_、internal :: helper_is_a_およびそれはセレクタ()メソッドです。明らかに、関連するすべてのテンプレートの完全な定義を調べることなく、この質問に答えることはできません。セレクタタイプではない方法でなければならないよう –