템플릿 템플릿 (+ 템플릿) 매개 변수의 내부 템플릿을 지정하지 않은 상태로 두는 방법

사용자 3493721

다음 코드를 컴파일하는 방법은 무엇입니까?

#include "vector"

template<
    template<class> class Container
> Container<int> f(int i) {
    return Container<int>{i};
}

int main() {
    return f<std::vector>(1)[0];
}

GCC-4.8.2는 다음과 같이 불평합니다.

error: no matching function for call to 'f(int)'
note: template<template<class> class Container> Container<int> f(int)

실제 문제는 호출자가 코드의 유일한 변경 사항이 주석 일 때 함수 내에서 사용할 Eigen 선형 대수 솔버 (예 : http://eigen.tuxfamily.org/dox/classEigen_1_1BiCGSTAB.html )를 지정하도록 허용하는 방법입니다 . 다른 줄에서 :

Eigen::BiCGSTAB<Eigen::SparseMatrix<Scalar_T>> solver;
//Eigen::ConjugateGradient<Eigen::SparseMatrix<Scalar_T>> solver;
//Eigen::SimplicialCholesky<Eigen::SparseMatrix<Scalar_T>> solver;

현재 함수는 다음과 같이 시작됩니다.

template<
    template<class> class Eigen_Solver_T,
    class Scalar_T
> std::vector<Scalar_T> solve(...)

, 발신자가 Eigen :: SparseMatrix를 줄 필요가 없으며 대신

Eigen::BiCGSTAB<Eigen::SparseMatrix<Scalar_T>>

템플릿 매개 변수로.

Kerrek SB

어떤 종류의 템플릿이 있는지 이해해야합니다. 이 경우 std::vector에는 두 가지 유형 매개 변수가 있습니다.

template <typename T, template <typename, typename> class C>
C<T> foo()
{
    return C<T>();
}

보다 일반적으로 비가 변 템플릿에도 허용되는 가변 서명을 사용하는 것이 좋습니다.

template <typename T, template <typename...> class C>
C<T> bar()
{
    return C<T>();
}

용법:

foo<int, std::vector>();    // OK, returns std::vector<int, std::allocator<int>>
bar<int, std::vector>();    // OK, ditto
bar<int, std::set>();       // also OK

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 개의 템플릿 템플릿 매개 변수로 공유 템플릿 변수를 지정하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Cloudformation의 기본 템플릿에서 하위 템플릿으로 매개 변수를 보내는 방법

분류에서Dev

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

분류에서Dev

템플릿을 평가하는 C ++ 템플릿 매개 변수 (템플릿 템플릿 매개 변수)

분류에서Dev

C ++ 템플릿, 템플릿 매개 변수를 다른 템플릿 매개 변수에 매핑하는 방법

분류에서Dev

매개 변수로 유형 또는 템플릿을 허용하는 템플릿

분류에서Dev

내부 템플릿으로 템플릿 함수를 구성하는 방법은 무엇입니까?

분류에서Dev

새 클래스를 생성하지 않고 C ++ 템플릿 템플릿 매개 변수를 부분적으로 채우는 방법

분류에서Dev

템플릿 템플릿 매개 변수로 부분 템플릿 전문화 이해하기

분류에서Dev

매개 변수 팩과 비 유형 템플릿 값으로 부분 템플릿 전문화를 수행하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

한 템플릿에서 다른 템플릿으로 가변 매개 변수를 전달하는 방법

분류에서Dev

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

분류에서Dev

동일한 템플릿 구조 함수 내에서 템플릿 템플릿 매개 변수로 전달되는 C ++ 템플릿 자체 이름

분류에서Dev

템플릿을 템플릿 인수로 사용하는 함수

분류에서Dev

템플릿의 반환 유형으로 Varaidic을 템플릿하는 방법은 무엇입니까?

분류에서Dev

템플릿 매개 변수가 제공되지 않은 경우 템플릿을 비활성화하는 방법은 무엇입니까?

분류에서Dev

템플릿 매개 변수 팩을 포함하는 기능 템플릿의 부분 순서

분류에서Dev

템플릿 클래스 내에서 템플릿 함수의 별칭을 지정하는 방법

분류에서Dev

Django 템플릿 : 뷰를 사용하지 않는 템플릿의 개체 표시

분류에서Dev

가변 템플릿 내부의 가변 템플릿을 전문화하는 C ++

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Templavoila 템플릿 코드를 Fluid / Flux 템플릿으로 변환하는 방법

분류에서Dev

템플릿을 변경하는 방법?

분류에서Dev

템플릿의 url 태그에 url 매개 변수를 전달하는 방법

분류에서Dev

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

Related 관련 기사

  1. 1

    두 개의 템플릿 템플릿 매개 변수로 공유 템플릿 변수를 지정하는 방법은 무엇입니까?

  2. 2

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

  3. 3

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

  4. 4

    Cloudformation의 기본 템플릿에서 하위 템플릿으로 매개 변수를 보내는 방법

  5. 5

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

  6. 6

    템플릿을 평가하는 C ++ 템플릿 매개 변수 (템플릿 템플릿 매개 변수)

  7. 7

    C ++ 템플릿, 템플릿 매개 변수를 다른 템플릿 매개 변수에 매핑하는 방법

  8. 8

    매개 변수로 유형 또는 템플릿을 허용하는 템플릿

  9. 9

    내부 템플릿으로 템플릿 함수를 구성하는 방법은 무엇입니까?

  10. 10

    새 클래스를 생성하지 않고 C ++ 템플릿 템플릿 매개 변수를 부분적으로 채우는 방법

  11. 11

    템플릿 템플릿 매개 변수로 부분 템플릿 전문화 이해하기

  12. 12

    매개 변수 팩과 비 유형 템플릿 값으로 부분 템플릿 전문화를 수행하는 방법은 무엇입니까?

  13. 13

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

  14. 14

    한 템플릿에서 다른 템플릿으로 가변 매개 변수를 전달하는 방법

  15. 15

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

  16. 16

    동일한 템플릿 구조 함수 내에서 템플릿 템플릿 매개 변수로 전달되는 C ++ 템플릿 자체 이름

  17. 17

    템플릿을 템플릿 인수로 사용하는 함수

  18. 18

    템플릿의 반환 유형으로 Varaidic을 템플릿하는 방법은 무엇입니까?

  19. 19

    템플릿 매개 변수가 제공되지 않은 경우 템플릿을 비활성화하는 방법은 무엇입니까?

  20. 20

    템플릿 매개 변수 팩을 포함하는 기능 템플릿의 부분 순서

  21. 21

    템플릿 클래스 내에서 템플릿 함수의 별칭을 지정하는 방법

  22. 22

    Django 템플릿 : 뷰를 사용하지 않는 템플릿의 개체 표시

  23. 23

    가변 템플릿 내부의 가변 템플릿을 전문화하는 C ++

  24. 24

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

  25. 25

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

  26. 26

    Templavoila 템플릿 코드를 Fluid / Flux 템플릿으로 변환하는 방법

  27. 27

    템플릿을 변경하는 방법?

  28. 28

    템플릿의 url 태그에 url 매개 변수를 전달하는 방법

  29. 29

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

뜨겁다태그

보관