私はdecltypeで遊んでいて、奇妙なことを発見しました。フリー関数を宣言型にしようとすると、なぜこのエラーが発生するのですか?それはlambdaとはうまく動作しますが、自由な機能ではうまく動作しません。私はここで何が間違っていますか?フリー関数のdecltypeエラー
#include <iostream>
using namespace std;
int fun()
{
cout << "inside fun" << endl;
return 1;
}
int main()
{
decltype(fun()) x = 2;
cout << x << endl;
auto lambda = []() -> int { cout << "inside lambda" << endl; return 3; };
decltype(lambda) l = lambda;
l();
decltype(fun) f = fun; // ERROR
f();
}
エラーは次のとおりです。
prog.cc: In function 'int main()':
prog.cc:19:19: warning: declaration of 'int f()' has 'extern' and is initialized
decltype(fun) f = fun; // ERROR
^
prog.cc:19:23: error: function 'int f()' is initialized like a variable
decltype(fun) f = fun; // ERROR
^~~
WandboxのURL:https://wandbox.org/permlink/E7BbGlyQD8FcHr5j
コンパイルエラーについて質問している場合は、問題のエラーをコピーして質問に貼り付けてください。 –
'decltype(&fun)f = &fun;' – Jarod42