-1
이름이없는 char[]
을 전달하면 괜찮습니까? std::string&
매개 변수로 작동합니까?이름없는 char [] to std :: string & reference
#include <string>
void func(std::string&);
int main()
{
func("nameless");
return 0;
}
이름이없는 char[]
을 전달하면 괜찮습니까? std::string&
매개 변수로 작동합니까?이름없는 char [] to std :: string & reference
#include <string>
void func(std::string&);
int main()
{
func("nameless");
return 0;
}
const가 아닌 lvalue 참조를 사용하기 때문에 사용자의 예제에서는 올바르지 않습니다. 임시 문자열은 문자열 리터럴에서 빌드되며 임시 변수는 const 왼쪽 값 참조 또는 오른쪽 값 참조에만 바인딩 할 수 있습니다.
이 작동 것이다 :
void func(const std::string&);
void func(std::string&&);
주 : 어떤 컴파일러 (주목할만한 VS를) 코드를 받아 들일 그들이 "확장자"로 임시 변수에 const가 아닌 lvalue를 참조를 결합 할 수 있기 때문이다. 하지만 이것은 표준 C++가 아니기 때문에 이식성있는 코드를 작성하려는 경우에는 사용하지 않는 것이 좋습니다. 또한 의미를 사용하면 공급 업체와 의미를 파악해야합니다.
그러나 vc2008은 허용합니다. 왜? – Ivars
@ 악명 높은 컴파일러 "확장명"을 찾습니다. – juanchopanza
은'void func (const std :: string &)'표준입니까? – Ivars