템플릿 클래스의 이름을 템플릿 인수에 전달하는 방법은 무엇입니까?

user9985127

다음을 수행 할 수 있다는 것을 알고 있습니다.

template <class CONTAINER>
void f(CONTAINER *c){}

int main(){
    std::vector<int> v;
    f(&v);
    std::set<int> s;
    f(&s);
}

그런 다음 다음과 같은 대안 (내 프로젝트에 편리한)을 원합니다.

template <class CONTAINER>
void f(CONTAINER<int> *c){} // the CONTAINER is the name of a template class

그러나 컴파일러는

error: ‘CONTAINER’ is not a template

이것이 가능한가?

토마스 사 블릭

템플릿 템플릿 매개 변수를 찾고 있습니다 .

#include <set>
#include <vector>

template<template<typename> typename CONTAINER>
void f(CONTAINER<int> *){}

int main(){
    std::vector<int> v;
    f(&v);
    std::set<int> s;
    f(&s);
}

"호환 가능한 인수에 템플릿 템플릿 매개 변수 일치" 는 C ++ 17 기능입니다. std::vector둘 이상의 템플릿 매개 변수가 있으므로 C ++ 14에서는 작동하지 않습니다 .

-frelaxed-template-template-argsClang으로이 코드를 컴파일 해야 합니다. 참조 : 함수 템플릿의 템플릿 템플릿 매개 변수P0522R0이 코드를 깨는 방법은 무엇입니까?

또 다른 방법은 가변 템플릿과 함께 템플릿 템플릿 매개 변수를 사용하여 "호환 가능한 인수에 템플릿 템플릿 매개 변수 일치" 를 방지하는 것입니다 .

#include <set>
#include <vector>

template<class T, template<class, class...> class CONTAINER, class... Args>
void f(CONTAINER<T, Args...> *){}

int main(){
    std::vector<int> v;
    f(&v);
    std::set<int> s;
    f(&s);
}

또는

#include <set>
#include <vector>

template<template<class, class...> class CONTAINER, class... Args>
void f(CONTAINER<int, Args...> *){}

int main(){
    std::vector<int> v;
    f(&v);
    std::set<int> s;
    f(&s);
}

이것은 C ++ 11에서 작동합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스 템플릿에서 상속되는 템플릿 매개 변수의 기본 템플릿 유형을 확인하는 방법은 무엇입니까?

분류에서Dev

클래스 템플릿 외부에서 클래스 템플릿의 생성자 템플릿을 정의하는 방법은 무엇입니까?

분류에서Dev

현재 클래스 템플릿을 다른 템플릿의 템플릿 매개 변수로 사용하는 방법은 무엇입니까?

분류에서Dev

템플릿 클래스가 매개 변수 팩을 사용할 때 다른 템플릿 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

템플릿 클래스의 멤버 함수에 포인터를 전달하는 방법은 무엇입니까?

분류에서Dev

템플릿 유형이 템플릿 클래스의 인스턴스인지 확인하는 방법은 무엇입니까?

분류에서Dev

Twig 표현식을 매개 변수로 템플릿에 전달한 다음 템플릿의 컨텍스트로 실행하는 방법은 무엇입니까?

분류에서Dev

xslt의 다른 템플릿에서 템플릿을 호출하는 방법은 무엇입니까?

분류에서Dev

템플릿 인수의 자체 템플릿 인수에 액세스하는 방법은 무엇입니까?

분류에서Dev

"템플릿 템플릿 매개 변수의 템플릿 인수는 클래스 템플릿 또는 유형 별칭 템플릿이어야합니다."

분류에서Dev

Azure ARM 템플릿-연결된 템플릿의 출력 변수를 매개 변수로 다른 템플릿에 전달하는 방법은 무엇입니까?

분류에서Dev

django 클래스 메서드의 데이터를 템플릿에 표시하는 방법은 무엇입니까?

분류에서Dev

html 템플릿에서 Django의 뷰로 드롭 다운 값을 전달하는 방법은 무엇입니까?

분류에서Dev

장고 템플릿의 정적 URL 내부에 쿼리 셋을 전달하는 방법은 무엇입니까?

분류에서Dev

템플릿을 사용하여 멤버 함수를 선언하는 방법은 무엇입니까? (템플릿 클래스가 아님)

분류에서Dev

SS 2.0을 사용하여 예약 된 스크립트의 사용자 이름을 PDF 템플릿에 전달하는 방법은 무엇입니까?

분류에서Dev

템플릿 클래스의 템플릿 typef가 잘못된 구문 인 이유는 무엇입니까?

분류에서Dev

템플릿 함수 또는 클래스에 전달 된 함수의 반환 유형을 얻는 방법은 무엇입니까?

분류에서Dev

std :: less를 클래스 템플릿에 전달하는 방법은 무엇입니까?

분류에서Dev

Freemarker 템플릿의 HashMap에서 값을 얻는 방법은 무엇입니까?

분류에서Dev

이 클래스 템플릿 오류를 수정하는 방법은 무엇입니까?

분류에서Dev

템플릿에서 django의 뷰로 2 개의 인수를 전달하는 방법은 무엇입니까?

분류에서Dev

템플릿 클래스에서 연산자 오버로딩을 구현하는 방법은 무엇입니까?

분류에서Dev

typedef 구성에서 중첩 클래스 템플릿 유형을 추론하는 방법은 무엇입니까?

분류에서Dev

블레이드 템플릿에서 클래스를 사용하는 방법은 무엇입니까?

분류에서Dev

템플릿 내에서 현재 앱의 이름을 얻는 방법은 무엇입니까?

분류에서Dev

C ++ 17 이전 클래스 템플릿 인수 추론을 에뮬레이션하는 방법은 무엇입니까?

분류에서Dev

템플릿으로 전송 된 매개 변수의 유형을 확인하는 방법은 무엇입니까?

분류에서Dev

목록에서 목록 항목을 클릭하면 django 템플릿에서 뷰로 인수를 전달하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    클래스 템플릿에서 상속되는 템플릿 매개 변수의 기본 템플릿 유형을 확인하는 방법은 무엇입니까?

  2. 2

    클래스 템플릿 외부에서 클래스 템플릿의 생성자 템플릿을 정의하는 방법은 무엇입니까?

  3. 3

    현재 클래스 템플릿을 다른 템플릿의 템플릿 매개 변수로 사용하는 방법은 무엇입니까?

  4. 4

    템플릿 클래스가 매개 변수 팩을 사용할 때 다른 템플릿 매개 변수를 전달하는 방법은 무엇입니까?

  5. 5

    템플릿 클래스의 멤버 함수에 포인터를 전달하는 방법은 무엇입니까?

  6. 6

    템플릿 유형이 템플릿 클래스의 인스턴스인지 확인하는 방법은 무엇입니까?

  7. 7

    Twig 표현식을 매개 변수로 템플릿에 전달한 다음 템플릿의 컨텍스트로 실행하는 방법은 무엇입니까?

  8. 8

    xslt의 다른 템플릿에서 템플릿을 호출하는 방법은 무엇입니까?

  9. 9

    템플릿 인수의 자체 템플릿 인수에 액세스하는 방법은 무엇입니까?

  10. 10

    "템플릿 템플릿 매개 변수의 템플릿 인수는 클래스 템플릿 또는 유형 별칭 템플릿이어야합니다."

  11. 11

    Azure ARM 템플릿-연결된 템플릿의 출력 변수를 매개 변수로 다른 템플릿에 전달하는 방법은 무엇입니까?

  12. 12

    django 클래스 메서드의 데이터를 템플릿에 표시하는 방법은 무엇입니까?

  13. 13

    html 템플릿에서 Django의 뷰로 드롭 다운 값을 전달하는 방법은 무엇입니까?

  14. 14

    장고 템플릿의 정적 URL 내부에 쿼리 셋을 전달하는 방법은 무엇입니까?

  15. 15

    템플릿을 사용하여 멤버 함수를 선언하는 방법은 무엇입니까? (템플릿 클래스가 아님)

  16. 16

    SS 2.0을 사용하여 예약 된 스크립트의 사용자 이름을 PDF 템플릿에 전달하는 방법은 무엇입니까?

  17. 17

    템플릿 클래스의 템플릿 typef가 잘못된 구문 인 이유는 무엇입니까?

  18. 18

    템플릿 함수 또는 클래스에 전달 된 함수의 반환 유형을 얻는 방법은 무엇입니까?

  19. 19

    std :: less를 클래스 템플릿에 전달하는 방법은 무엇입니까?

  20. 20

    Freemarker 템플릿의 HashMap에서 값을 얻는 방법은 무엇입니까?

  21. 21

    이 클래스 템플릿 오류를 수정하는 방법은 무엇입니까?

  22. 22

    템플릿에서 django의 뷰로 2 개의 인수를 전달하는 방법은 무엇입니까?

  23. 23

    템플릿 클래스에서 연산자 오버로딩을 구현하는 방법은 무엇입니까?

  24. 24

    typedef 구성에서 중첩 클래스 템플릿 유형을 추론하는 방법은 무엇입니까?

  25. 25

    블레이드 템플릿에서 클래스를 사용하는 방법은 무엇입니까?

  26. 26

    템플릿 내에서 현재 앱의 이름을 얻는 방법은 무엇입니까?

  27. 27

    C ++ 17 이전 클래스 템플릿 인수 추론을 에뮬레이션하는 방법은 무엇입니까?

  28. 28

    템플릿으로 전송 된 매개 변수의 유형을 확인하는 방법은 무엇입니까?

  29. 29

    목록에서 목록 항목을 클릭하면 django 템플릿에서 뷰로 인수를 전달하는 방법은 무엇입니까?

뜨겁다태그

보관