次は、両方のコンパイラでエラーが関数を返す関数の宣言の違法を扱うgccと打ち鳴らす関数を返す関数型を記述できますか?
#include <type_traits>
int foo();
int main()
{
using R = std::result_of_t<decltype(foo)()>; // error
}
の両方でコンパイルに失敗します。しかし、私はそのような関数を宣言していません - 私はその型を書くことを試みています - それはresult_of
が期待しているからです。これは実際にはまだ貧弱ですか?
私はこの "両方のコンパイラでのエラーは、関数を返す関数の宣言の違法性を扱っていると思います。"実際にはエラー – Guiroux
で置き換えられます。なぜ 'decltype(foo())'を使わないのですか? – StenSoft
関数が別の関数型を返す関数型を作成することはできません。 "関数は戻り値の型が 型の配列または関数ではありません" dcl.fct/8 – Simple