2017-10-28 1 views
0

스키밍 : resultunique_ptr에 원시 포인터가 왜C++에서 unique_ptr 함수 매개 변수에 대한 원시 포인터의 목적은 무엇입니까? 내가 이상한 함수 서명 우연히 TensorFlow C++ API를 통해

Status Create(
    const FileSystemStoragePathSourceConfig & config, 
    std::unique_ptr<FileSystemStoragePathSource> *result 
) 

이해가 안 돼요. 일반적으로 unique_ptr을 함수 매개 변수로 전달하려는 경우 move (&&) 또는 참조 & 또는 값으로 수행합니다. 이전에 unique_ptr에 대한 원시 포인터의 유스 케이스를 보지 못했습니다.

+0

쓴 사람은 호출 구문을 쉽게 잘못 해석 할 수있는 참조에 의한 것이 아닌 by-address로 out 매개 변수를 관리하는 것을 선호하기 때문에 야생 사람이 추측합니다. – WhozCraig

+0

또한 출력 매개 변수를 선택적으로 사용할 수 있습니다. 'std :: optional' 전에 포인터로 할 수있는 것. – StoryTeller

+0

"값으로 &"당신은 그것을 바꿔 말할 수 있습니다. 심판은 가치가 아닙니다. – curiousguy

답변

4

TensorFlow는 Google에 의해 작성되었습니다. Google's C++ style guide는 말한다 : 참조에 의해 전달

모든 매개 변수가 const를 표시해야합니다.

이 의미는 모든 출력 매개 변수가 참조가 아니라 포인터 여야한다는 것입니다. 이 스타일은 관용적 인 C++가 아닙니다 (표준 라이브러리는 참조로 출력 매개 변수를 전달합니다). 그러나 Google의 스타일 가이드의 지지자는 출력 매개 변수를 포인터로 전달하면 어떤 매개 변수가 입력이고 어느 것이 출력인지 명확하게 보여줍니다.

관련 문제