c ++-ref 한정자를 사용하여 lvalue 인스턴스에서만 호출 할 수있는 const 멤버 func

Golosovsky

ref 한정자를 통해 클래스의 lvalue 인스턴스 에서만 호출되도록 클래스의 const 'getter'메서드를 적용하려고하고 어떤 이유로 예기치 않은 결과를 얻습니다 ( clang 6.0.1컴파일 중 입니다. Windows 에서 C ++ 1z 플래그 를 통한 C ++ 17 지원 ) :

선언 bool getVal() const &;은 메소드가 rvalue 참조에서도 호출되도록합니다 .

선언 bool getVal() &; 은 rvalue 참조에서 메서드가 호출되는 것을 허용하지 않지만 내가 이해하는 바와 같이 함수는 더 이상 const 메서드가 아니며 'getter'메서드에 대한 디자인 측면에서 문제가 있습니다.

방법에 대해 두 가지 특성을 모두 얻는 올바른 방법은 무엇입니까?

HolyBlackCat

를 사용 bool getVal() const &;하되 rvalue에 대해 삭제 된 오버로드를 추가합니다.

bool getVal() const && = delete;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

std :: ref를 사용하여 멤버 함수를 호출 가능한 유형으로 사용할 수있는 이유는 무엇입니까?

분류에서Dev

임시 개체에서 lvalue-ref 정규화 된 멤버 함수를 호출 할 때 GCC의 오류 메시지 문구

분류에서Dev

오류 호출 기능 (인스턴스 멤버를 사용할 수 없음)

분류에서Dev

보호 된 멤버를 첫 번째 수준 자식 C #에서만 액세스 할 수 있도록 제한하는 방법

분류에서Dev

$ this-> my_func () 또는 parent :: my_func ()를 사용하여 상속 된 멤버 함수를 호출합니까?

분류에서Dev

C ++ : const 멤버 함수에서 const가 아닌 포인터 매개 변수를 사용하는 외부 함수로 포인터 값 멤버 변수를 전달할 수있는 이유는 무엇입니까?

분류에서Dev

const 메서드에서 멤버를 변경하는 메서드를 호출 할 수있는 이유는 무엇입니까?

분류에서Dev

const_cast를 사용하여 클래스에 비 정적 const 멤버 할당

분류에서Dev

Keras를 사용하여 사용자 지정 손실 함수에서 인스턴스 속성 또는 전역 변수를 호출 / 사용할 수 있습니까?

분류에서Dev

참조로 호출을 사용할 때 객체없이 멤버 함수 const를 호출 할 수 없습니다.

분류에서Dev

이름으로 멤버 함수를 호출 할 수있는 C ++ 클래스에 대한 함수를 제공하는 방법

분류에서Dev

C ++ 클래스에서 복잡한 함수를 사용하여 const 멤버 초기화

분류에서Dev

lvalue, rvalue 및 rvalue ref를 허용하는 C ++ 함수 서명

분류에서Dev

RValue 객체에서 호출되는 LValue 참조 규정 멤버 함수

분류에서Dev

하나의 함수 호출 C ++를 사용하여 여러 상수 클래스 멤버 초기화

분류에서Dev

C ++에서 const 데이터 멤버가있는 클래스에 복사 할당 연산자가 없을 수 있습니까?

분류에서Dev

초기화 오류와 함께 인스턴스 멤버 'ref'를 사용할 수 없습니다.

분류에서Dev

C ++ 템플릿 클래스를 사용하여 비 정적 멤버 함수 호출

분류에서Dev

C ++에서 const 멤버 변수를 사용하면 장점이 있습니까?

분류에서Dev

특정 클래스 인스턴스에서 메서드를 호출하는 HTML 버튼은 인스턴스 값에 액세스 할 수 없습니다.

분류에서Dev

lvalue-ref-qualified 함수를 rvalue-ref-qualified 함수에서 직접 사용할 수 있습니까?

분류에서Dev

AFNetworking을 사용하여 iOS에서 호스트 (서버)를 사용할 수 있는지 확인하는 방법

분류에서Dev

C #에서 const 및 정적 멤버 변수는 모두 다음을 수행 할 수 있습니다.

분류에서Dev

Flutter 인스턴스 멤버 'result'는 정적 액세스를 사용하여 액세스 할 수 없습니다.

분류에서Dev

C ++에서 템플릿으로 클래스 멤버를 호출 할 수 있습니까?

분류에서Dev

C ++ 구조 내에서 원자 변수를 선언하여 해당 멤버를 보호 할 수 있습니까?

분류에서Dev

.H 대신 IMPLICIT 인스턴스화를 사용하여 CPP 파일에 클래스 멤버 함수에 대한 C ++ 템플릿 정의를 배치 할 수 있습니까?

분류에서Dev

const 멤버가있는 클래스의 인스턴스를 emplace_back 할 수 없습니다.

분류에서Dev

클래스 멤버 함수 C ++에서 키워드 'const'를 두 번 사용하는 이유

Related 관련 기사

  1. 1

    std :: ref를 사용하여 멤버 함수를 호출 가능한 유형으로 사용할 수있는 이유는 무엇입니까?

  2. 2

    임시 개체에서 lvalue-ref 정규화 된 멤버 함수를 호출 할 때 GCC의 오류 메시지 문구

  3. 3

    오류 호출 기능 (인스턴스 멤버를 사용할 수 없음)

  4. 4

    보호 된 멤버를 첫 번째 수준 자식 C #에서만 액세스 할 수 있도록 제한하는 방법

  5. 5

    $ this-> my_func () 또는 parent :: my_func ()를 사용하여 상속 된 멤버 함수를 호출합니까?

  6. 6

    C ++ : const 멤버 함수에서 const가 아닌 포인터 매개 변수를 사용하는 외부 함수로 포인터 값 멤버 변수를 전달할 수있는 이유는 무엇입니까?

  7. 7

    const 메서드에서 멤버를 변경하는 메서드를 호출 할 수있는 이유는 무엇입니까?

  8. 8

    const_cast를 사용하여 클래스에 비 정적 const 멤버 할당

  9. 9

    Keras를 사용하여 사용자 지정 손실 함수에서 인스턴스 속성 또는 전역 변수를 호출 / 사용할 수 있습니까?

  10. 10

    참조로 호출을 사용할 때 객체없이 멤버 함수 const를 호출 할 수 없습니다.

  11. 11

    이름으로 멤버 함수를 호출 할 수있는 C ++ 클래스에 대한 함수를 제공하는 방법

  12. 12

    C ++ 클래스에서 복잡한 함수를 사용하여 const 멤버 초기화

  13. 13

    lvalue, rvalue 및 rvalue ref를 허용하는 C ++ 함수 서명

  14. 14

    RValue 객체에서 호출되는 LValue 참조 규정 멤버 함수

  15. 15

    하나의 함수 호출 C ++를 사용하여 여러 상수 클래스 멤버 초기화

  16. 16

    C ++에서 const 데이터 멤버가있는 클래스에 복사 할당 연산자가 없을 수 있습니까?

  17. 17

    초기화 오류와 함께 인스턴스 멤버 'ref'를 사용할 수 없습니다.

  18. 18

    C ++ 템플릿 클래스를 사용하여 비 정적 멤버 함수 호출

  19. 19

    C ++에서 const 멤버 변수를 사용하면 장점이 있습니까?

  20. 20

    특정 클래스 인스턴스에서 메서드를 호출하는 HTML 버튼은 인스턴스 값에 액세스 할 수 없습니다.

  21. 21

    lvalue-ref-qualified 함수를 rvalue-ref-qualified 함수에서 직접 사용할 수 있습니까?

  22. 22

    AFNetworking을 사용하여 iOS에서 호스트 (서버)를 사용할 수 있는지 확인하는 방법

  23. 23

    C #에서 const 및 정적 멤버 변수는 모두 다음을 수행 할 수 있습니다.

  24. 24

    Flutter 인스턴스 멤버 'result'는 정적 액세스를 사용하여 액세스 할 수 없습니다.

  25. 25

    C ++에서 템플릿으로 클래스 멤버를 호출 할 수 있습니까?

  26. 26

    C ++ 구조 내에서 원자 변수를 선언하여 해당 멤버를 보호 할 수 있습니까?

  27. 27

    .H 대신 IMPLICIT 인스턴스화를 사용하여 CPP 파일에 클래스 멤버 함수에 대한 C ++ 템플릿 정의를 배치 할 수 있습니까?

  28. 28

    const 멤버가있는 클래스의 인스턴스를 emplace_back 할 수 없습니다.

  29. 29

    클래스 멤버 함수 C ++에서 키워드 'const'를 두 번 사용하는 이유

뜨겁다태그

보관