私はのコンパイラエラーを取得しています(エラーが関数にパラメータが欠落している)意味がありません。 :次のようにコンパイラエラーは
template<typename RT, typename func, typename... Args>
RT buildTransFunc(func f, Args... args)
{
return RT(boost::bind(f, _1, args...));
}
私は上記を呼び出しています:
typedef boost::function<std::string (short int)> toASCIITranslator;
toASCIITranslator temp = buildTransFunction<toASCIITranslator, std::string (*) (short int, boost::function<EnumType(short int)>, EnumTypeToStringTranslatorType&), boost::function<EnumType(short int)>, EnumTypeToStringTranslatorType& >
(&Translator<std::string, forward_trans, short int, boost::function<EnumType (short int)>, EnumTypeToStringTranslatorType>, boost::function<EnumType(short int)(&enumChecker), EnumTypeToStringTranslator);
エラーメッセージ内のstd :: string(*)(short int、boost :: function、EnumTypeToStringTranslatorType &)パラメータをスキップしてエラーメッセージが表示されているようです。
私はGCC 4.5.2をコンパイラに使用しています。
翻訳機能の宣言は次のとおりです。
template<typename RT, typename D, typename... Args>
RT Translator(Args... args)
{
return static_cast<RT>(translate<RT, D>(args...));
}
変換機能は、この問題で見つけることができます: Translate
EDIT は、パラメータをspecifing終了するbuildTransFunctionへの呼び出しを修正しました。
g ++引数が使用されました:-std = C++ 0x。
:
はちょうどこのような呼び出しを行います。コンパイラにC++ 0xをコンパイルするように指示しましたか? –
はい、コンパイラの引数リストに-std = C++ 0xを追加しました。 – diverscuba23
あなたは奇妙なコードが必要です。 '&enumChecker'があなたに' boost :: function <> 'を与えるのはなぜですか?また、 'f'をどこで宣言しましたか?すべてが実際のコードのようには見えません。また、翻訳者の宣言が必要です。 –