I think following code should generate an error:
#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;
}
But gcc 4.1.2 compiles it successuflly.
Is it that the constructor of std::string get in the way, creating an instance of std::string?
I believe it shouldn't, because reference is merely an alias to a variable (in this case, there is no variable of type std::string that the reference is referring to).
Is anybody out there to explain why the code compiles successfully?
Thanks in advance.