次のコードがあるとします。
std::vector<std::string> foo({"alice", "bob"});
for (const std::string &f : foo)
std::cout << f.size() << std::endl;
間違えて に変更f.size()
するとf->size()
、GCC から次のエラーが表示されます。
エラー: '->' のベース オペランドに非ポインター型 '<strong>const string {aka const std::basic_string} があります
なぜ(参照)const std::basic_string<char>
ではなく実際の型なのですか?const std::basic_string<char> &