オープンソースの Avesta を VC2008 でコンパイルした時のエラーがどうしてもわかり
ません。
対処方法を教えてください。
template
<
template < typename > class T0 = meta::Void1, template <
typename > class T1 = meta::Void1,
template < typename > class T2 = meta::Void1, template <
typename > class T3 = meta::Void1,
template < typename > class T4 = meta::Void1, template <
typename > class T5 = meta::Void1,
template < typename > class T6 = meta::Void1, template <
typename > class T7 = meta::Void1,
template < typename > class T8 = meta::Void1, template <
typename > class T9 = meta::Void1
>
struct mixin
{
template < typename TBase > struct Result1
{
typedef T0< typename mixin<T1, T2, T3, T4, T5, T6,
T7, T8, T9>::Result1<TBase>::Result > Result;
};
};
template <> struct mixin < PP_CSV0(10, meta::Void1) >
{
template < typename TBase > struct Result1
{
typedef TBase Result;
};
};
エラー 9 error
C2039: 'Result' : 'mew::mixin<T0,T1,T2,T3,T4,T5,T6,T7,T8>::Result1<TBase>' のメ
ンバではありません。 d:\Avesta\src\include\object.hpp 43
エラー 7 error C2059: 構文エラー : '<'
x:\Avesta\src\include\object.hpp 43
エラー 11 error C2065: 'Result' : 定義されていない識別子です。
x:\Avesta\src\include\object.hpp 43
エラー 10 error C2146: 構文エラー : ',' が、識別子 'Result' の前に必要
です。 x:\Avesta\src\include\object.hpp 43
エラー 8 error C2238: ';' の前に無効なトークンがあります。
x:\Avesta\src\include\object.hpp 43
よくわかりませんが(読む気がしないコードなので)、
不要と思われる「typename」を削除してみたら
どうでしょう。
なんか変な場所にありますよねぇ。
元の開発環境がVC2008でないのであれば、うまくいかない可能性もあると思います。
元の開発環境では許されていたけれど、VC2008では許されない記述だった
なんて事もありますし。
元の記述の意味を理解してVC2008で通るようにしないといけないと思いますが、
これを見ただけでは何とも分かりません。
いつも書くのですが
まず、「 errorC2039,error C2059,error C2065,error C2146,error C2238」を
MSDNで調べて見たらどうでしょうか。
Cからの番号で検索すればいいです。
まず、エラー意味を理解してから質問しましょう。
ヘルプの内容が分からないのであれば、
エラー番号 CXXXXのヘルプのここの部分が分からないという感じで質問しましょう。
ダウンロードしたソース環境をそのままコンパイルしてエラーが出るなら
作者に聞いてみるのもいいと思います。
ただ聞き方に注意ですね。
作者は、.NET 2003 OSはXPの環境で開発を行なっているので、苦情は言わないように
したほうがいいですね。
苦情というよりお願いですね。