私はグーグルで、解決策を見つけました。C++ 11 auto compile time or runtime?それは、重複しているが完全ではないが、答えはコンパイル時だと述べた。それは本当に時間をコンパイルしていますか?以下の例を考えてみましょう。(私の仮定)をコンパイルしながら、ここでC++ 11でコンパイル時や実行時に自動的に型を推定しますか?
auto give_something(bool mybool)
{
if (mybool)
return string("auto");
return 6.66f;
}
int main()
{
bool mybool = (rand() % 2) ? true : false;
auto x = give_something(mybool); // how type of x is deduced?
return 0;
}
x
の種類とgive_something
の戻り値の型は推論することはできません。実行時にのみ推論する必要があります。したがって、auto
コンパイル時間または実行時間、あるいはその両方?
'C++ 11でコンパイル時や実行時に型を自動的に推測しますか? ':**コンパイル時**では、テンプレート引数の減算の規則に従います例外はいくつかあります。 – 101010
コンパイル時にコンパイラがすべての型を知っている必要があります。 –