"C++ Templates:The Complete Guide"を読んでください。22.5.3関数呼び出し構文?
私は関数ポインタに使用する構文と混同しています。私はこの構文が "関数呼び出し構文"と呼ばれると信じていますか?私はここに何かを逃しているように感じる?私は問題のコードのセクションをコメントしました。
template<typename F>
void my_sort(.., F cmp = F())
{
..
if (cmp(x,y)) {..}
..
}
//*** WHAT IS THIS SYNTAX? ***
bool my_criterion()(T const& x, T const& y);
// call function with function pointer passed as value argument
my_sort(..., my_criterion);
は、私はすべて置き換え.. 'sの適切な値を持つとmy_criterion()でintにTを置き換え、それはまだコンパイルされません。
彼は最初にこの構文は、その前のセクションで言及:
「が書き込まれるように、本ファンクタ仕様手法の利点は、引数として通常の関数ポインタを渡すことも可能であるということである例えば:
bool my_criterion() (T const& x, T const& y);
私は本からの抜粋に基づいてコンパイルしようとしているコード:
template<typename F>
void mySort(F cmp)
{
std::cout << "mySort(F cmp)" << std::endl;
}
bool myCriterion()(int x, int y);
*エラーC2091:関数が返す機能(を参照myCriterion)
エラーメッセージは何ですか?また、*実際のコードをいくつか投稿してください。 –
エラー:C2091:関数が関数を返します。私は本のコードを逐語的にコピーした。 – Integer
私はあなたが実際にコンパイルしようとしているコードを意味します。 –