次のコードはエラーを生成するはずだと思います:
#include <iostream>
#include <string>
static void pr(const std::string &aStr)
{
std::cout << aStr << "\n";
}
int main(void)
{
const char *a = "Hellu";
pr(a);
return 0;
}
しかし、gcc 4.1.2 では正常にコンパイルされます。
std::string のコンストラクターが邪魔になり、std::string のインスタンスを作成するということですか?
参照は単に変数へのエイリアスであるため、そうすべきではないと思います(この場合、参照が参照している std::string 型の変数はありません)。
コードが正常にコンパイルされる理由を説明する人はいますか?
前もって感謝します。