템플릿을 사용할 때 Lvalue의 유형을 결정할 수 있습니까?

RD

단어로 표현하기가 어렵 기 때문에 여기에 예제가 있습니다.

int (*foo)(int) = load_sym<decltype(foo)>("foo");

template <typename T>
T load_sym(char *sym) {
    /* some other stuff */
    return (T)dlsym(sym);
}

가능하다면 decltype(foo)간결하게 만들기 위해 부분을 생략하고 싶습니다 . 문제는 T명시 적으로 템플릿 인수로 지정하지 않고도 결정할 수 있다는 것입니다 .

아마도 불가능할 것 같다는 느낌이 들지만, 사람들이 해결 방법을 생각해 냈는지 궁금합니다.

브라이언 비

다음 auto은 비 정적 데이터 멤버의 경우 를 피하고 작동하지만 약간 못생긴 솔루션입니다 .

struct Symbol {
  Symbol(void* p) : p(p) {}
  template <typename T>
  operator T*() { return reinterpret_cast<T*>(p); }
  void* p;
};

Symbol load_sym(const char *sym) {
    /* some other stuff */
    return dlsym(sym);
}

이제 할 수 있습니다

int (*foo)(int) = load_sym("foo");

Symbol클래스는 단순히의 반환 값을 저장 load_sym하지만 void*을 모든 유형의 포인터 로 변환하는 데 사용할 수있는 변환 연산자 템플릿을 제공합니다 .

( void*함수 포인터 유형으로의 변환 은 조건부로 지원되지만 POSIX가 필요하다고 생각합니다.)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

"템플릿 함수 포인터"의 유형을 정의 할 수 있습니까?

분류에서Dev

C ++에서 템플릿에 정의 된 유형을 어떻게 사용할 수 있습니까?

분류에서Dev

데이터 주석을 사용할 때 사용자 정의 편집기 템플릿을 어떻게 사용할 수 있습니까?

분류에서Dev

템플릿 정렬에서 단순 유형을 사용할 수 있습니까?

분류에서Dev

템플릿 매개 변수의 멤버 유형을 어떻게 사용할 수 있습니까?

분류에서Dev

C ++의 다른 템플릿 함수에서 템플릿 클래스에 속하는 중첩 유형을 어떻게 사용할 수 있습니까?

분류에서Dev

prop에서 템플릿 리터럴을 사용할 때 줄 바꿈을 어떻게 할 수 있습니까?

분류에서Dev

`data.table`의 DT [i, j, by]를 사용할 때 열 유형을 미리 설정할 수 있습니까?

분류에서Dev

사용자가 구성 요소의 템플릿을 사용자 정의하도록 할 수 있습니까?

분류에서Dev

템플릿을 사용할 때 왜 앞으로 선언을 사용할 수 없습니까?

분류에서Dev

템플릿을 사용할 때 컴파일러에서 SFINAE 버그가 될 수 있습니까?

분류에서Dev

템플릿을 디자인 할 때 Microsoft의 원본 템플릿과 같은 더미 텍스트를 어떻게 만들 수 있습니까?

분류에서Dev

템플릿 상수 유형을 어떻게 선언 할 수 있습니까?

분류에서Dev

변수 템플릿을 사용하여 다른 변수 템플릿을 선언 할 수 있습니까?

분류에서Dev

템플릿과 django의 변수를 사용할 때 템플릿에서 js 파일을 이동하는 방법은 무엇입니까?

분류에서Dev

C ++ : 조건부 유형을 사용하는 템플릿 함수에서 'double'유형의 lvalue로 'char *'유형의 매개 변수를 초기화 할 수 없습니다.

분류에서Dev

구조를 정의 할 때 malloc을 사용할 수 있습니까?

분류에서Dev

템플릿 클래스 멤버의 유형을 추론 할 수 없습니다.

분류에서Dev

신뢰할 수없는 문자열과 함께 템플릿 리터럴을 사용하여 속성 값을 설정할 때 XSS 위험이 있습니까?

분류에서Dev

신뢰할 수없는 문자열과 함께 템플릿 리터럴을 사용하여 속성 값을 설정할 때 XSS 위험이 있습니까?

분류에서Dev

클래스 템플릿이 정수를 사용할 때 멤버 선언을 찾을 수 없습니다.

분류에서Dev

Angular 4에서 템플릿에 사용되는 구성 요소의 유형을 프로그래밍 방식으로 변경할 수 있습니까?

분류에서Dev

하나의 jade 템플릿에 다른 jade 템플릿 파일을 포함 할 수 있습니까?

분류에서Dev

스키마를 지정할 때 FSharp.Data.CsvProvider와 함께 사용자 정의 유형을 사용할 수 있습니까?

분류에서Dev

다른 템플릿의 HTML을 사용하여 meteor의 템플릿 본문을 어떻게 변경할 수 있습니까?

분류에서Dev

cloudformation의 상위 템플릿에서 내부 (자식) 템플릿의 출력을 사용할 수 없습니다.

분류에서Dev

Soy 템플릿의 값을 수정할 수 없습니다.

분류에서Dev

템플릿 템플릿 매개 변수와 함께 개념을 사용할 수 있습니까?

분류에서Dev

jQuery의 Django 템플릿에서 2D 배열을 어떻게 사용할 수 있습니까?

Related 관련 기사

  1. 1

    "템플릿 함수 포인터"의 유형을 정의 할 수 있습니까?

  2. 2

    C ++에서 템플릿에 정의 된 유형을 어떻게 사용할 수 있습니까?

  3. 3

    데이터 주석을 사용할 때 사용자 정의 편집기 템플릿을 어떻게 사용할 수 있습니까?

  4. 4

    템플릿 정렬에서 단순 유형을 사용할 수 있습니까?

  5. 5

    템플릿 매개 변수의 멤버 유형을 어떻게 사용할 수 있습니까?

  6. 6

    C ++의 다른 템플릿 함수에서 템플릿 클래스에 속하는 중첩 유형을 어떻게 사용할 수 있습니까?

  7. 7

    prop에서 템플릿 리터럴을 사용할 때 줄 바꿈을 어떻게 할 수 있습니까?

  8. 8

    `data.table`의 DT [i, j, by]를 사용할 때 열 유형을 미리 설정할 수 있습니까?

  9. 9

    사용자가 구성 요소의 템플릿을 사용자 정의하도록 할 수 있습니까?

  10. 10

    템플릿을 사용할 때 왜 앞으로 선언을 사용할 수 없습니까?

  11. 11

    템플릿을 사용할 때 컴파일러에서 SFINAE 버그가 될 수 있습니까?

  12. 12

    템플릿을 디자인 할 때 Microsoft의 원본 템플릿과 같은 더미 텍스트를 어떻게 만들 수 있습니까?

  13. 13

    템플릿 상수 유형을 어떻게 선언 할 수 있습니까?

  14. 14

    변수 템플릿을 사용하여 다른 변수 템플릿을 선언 할 수 있습니까?

  15. 15

    템플릿과 django의 변수를 사용할 때 템플릿에서 js 파일을 이동하는 방법은 무엇입니까?

  16. 16

    C ++ : 조건부 유형을 사용하는 템플릿 함수에서 'double'유형의 lvalue로 'char *'유형의 매개 변수를 초기화 할 수 없습니다.

  17. 17

    구조를 정의 할 때 malloc을 사용할 수 있습니까?

  18. 18

    템플릿 클래스 멤버의 유형을 추론 할 수 없습니다.

  19. 19

    신뢰할 수없는 문자열과 함께 템플릿 리터럴을 사용하여 속성 값을 설정할 때 XSS 위험이 있습니까?

  20. 20

    신뢰할 수없는 문자열과 함께 템플릿 리터럴을 사용하여 속성 값을 설정할 때 XSS 위험이 있습니까?

  21. 21

    클래스 템플릿이 정수를 사용할 때 멤버 선언을 찾을 수 없습니다.

  22. 22

    Angular 4에서 템플릿에 사용되는 구성 요소의 유형을 프로그래밍 방식으로 변경할 수 있습니까?

  23. 23

    하나의 jade 템플릿에 다른 jade 템플릿 파일을 포함 할 수 있습니까?

  24. 24

    스키마를 지정할 때 FSharp.Data.CsvProvider와 함께 사용자 정의 유형을 사용할 수 있습니까?

  25. 25

    다른 템플릿의 HTML을 사용하여 meteor의 템플릿 본문을 어떻게 변경할 수 있습니까?

  26. 26

    cloudformation의 상위 템플릿에서 내부 (자식) 템플릿의 출력을 사용할 수 없습니다.

  27. 27

    Soy 템플릿의 값을 수정할 수 없습니다.

  28. 28

    템플릿 템플릿 매개 변수와 함께 개념을 사용할 수 있습니까?

  29. 29

    jQuery의 Django 템플릿에서 2D 배열을 어떻게 사용할 수 있습니까?

뜨겁다태그

보관