を入力します。とリターンなどの自動車の使用とパラメータは、我々はそれを読んビャーネ・ストロヴストルップブック(C++プログラミング言語)の第4版ではC++ 14
0
0.67
私は異なる結果(タイプ)を得た理由は、私は疑問に思って:
#include <iostream>
/*-----------------------------*/
auto multiplication(auto a, auto b)
{
return a * b;
}
int main()
{
auto c = multiplication(5,.134);
auto d = 5 * .134;
std::cout<<c<<"\n"<<d<<"\n";
}
(14 C++ -std =を指定してコンパイル)は、このプログラムの標準出力:私はこの小さなテストプログラムを作りましたcとdの変数を返します。
EDIT: 私のGCCのバージョン:gcc version 5.4.0 20160609
結果がコンパイラに分かりやすいようにするには、 'auto'を使用することをお勧めします。この場合、引数の型として 'auto'を使うと、あいまいで、解釈の対象になる可能性があります。'int' *' float'の結果は 'float'ですが、引数が間違って推測されると、そのメソッドの中で' int' * 'int'と解釈される可能性があります。 – tadman
これは非標準の拡張です。 'C++ 14'は関数に対して' auto'パラメータを許可しません。 – Galik
このコードでは、 "エラー:ISO C++では、型のない '乗算'の宣言が禁じられています。警告:暗黙的に 'double'から 'int'への変換により、値が0.134から0に変更されます。[-Wliteral-変換]を使用するコンパイラによって異なります。 'clang' LLVMベースのコンパイラは、何がうまくいかないかについて本当に良い説明をします。だから、このような場合には参考としてチェックする価値があります。 – tadman