#include <iostream>
void swap(float& const a, float& const b)
{}
int main()
{
std::cout << "Hello, world!\n";
}
この単純なコードはVisual Studio(vs2013)でコンパイルされますが、gccではコンパイルされません。私はC++ 10とC++ 11を試しました。 gccがVisual Studioとgccのconst参照構文の違い
error: 'const' qualifiers cannot be applied to 'float&'
を言ってエラーになります。しかし、私は
void swap(float const &a, float const &b)
に関数定義を変更した場合には、gccともVisual Studioでコンパイルします。
私の質問は、これらの両方の構文が同じことを意味しますか?また、gccではなくVisual Studioでコンパイルする理由
を直観的に署名が ''ボイドスワップ(CONSTフロートと、CONSTフロート&B)であるべきです。 –
C++ 10はありません。おそらく98または03を意味します。 – emlai
Visual Studioは間違っています(もう一度)。 –