ref 한정자를 통해 클래스의 lvalue 인스턴스 에서만 호출되도록 클래스의 const 'getter'메서드를 적용하려고하고 어떤 이유로 예기치 않은 결과를 얻습니다 ( clang 6.0.1 로 컴파일 중 입니다. Windows 에서 C ++ 1z 플래그 를 통한 C ++ 17 지원 ) :
선언 bool getVal() const &;
은 메소드가 rvalue 참조에서도 호출되도록합니다 .
선언 bool getVal() &;
은 rvalue 참조에서 메서드가 호출되는 것을 허용하지 않지만 내가 이해하는 바와 같이 함수는 더 이상 const 메서드가 아니며 'getter'메서드에 대한 디자인 측면에서 문제가 있습니다.
방법에 대해 두 가지 특성을 모두 얻는 올바른 방법은 무엇입니까?
를 사용 bool getVal() const &;
하되 rvalue에 대해 삭제 된 오버로드를 추가합니다.
bool getVal() const && = delete;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다