Functor를 클래스 템플릿의 멤버로 사용하는 방법은 무엇입니까?

왕위

std::function클래스 템플릿 내에서 펑터를 객체 로 사용하려고했습니다 . 아래는 내가 지금까지 한 일입니다.

//! the functor class template
template<typename T>
struct func
{
    void operator ()(T t)
    {
        std::cout << t << "\n";
    }
};

//! the class template that holds a std::function object as a member
template<typename T>
struct Foo
{
    std::function<void(T)> bar = func<T>();
};


int main()
{
    Foo<int> foo;
    return 0;
}

불평했다

error: conversion from 'func<int>' to non-scalar type 'std::function<void(int)>' requested
 struct Foo
        ^

그렇게 할 수 있습니까? 그것을 고치는 방법?

JorenHeit

정적으로 만들고 클래스 범위 외부에서 초기화하거나 생성자에서 초기화 할 수 있습니다. GCC 4.7.2에서 테스트되었습니다.

template<typename T>                                                                                
struct Foo                                                                                          
{                                                                                                   
    static std::function<void(T)> bar;                                                                 
};                                                                                                  

template <typename T>                                                                               
std::function<void(T)> Foo<T>::bar = func<T>(); 

편집하다

C ++ 11에서는 중괄호 초기화를 사용할 수도 있습니다.

std::function<void(T)> bar { func<T>() };

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

클래스 템플릿의 하위 클래스를 클래스 템플릿으로 만드는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

템플릿 유형에서 정적 멤버 초기화를 적용하는 방법은 무엇입니까? 또는 템플릿 유형에서 파생 된 모든 클래스의 수를 얻는 방법은 무엇입니까?

분류에서Dev

멤버 함수 템플릿의 인스턴스화를 삭제하는 방법은 무엇입니까?

분류에서Dev

힙 템플릿에 클래스가 사용되는 클래스 멤버로 핸들을 추가하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

일부 템플릿 클래스를 하나의 템플릿으로 통합하는 방법은 무엇입니까?

분류에서Dev

템플릿 클래스에서 템플릿 멤버 함수를 전문화하는 방법은 무엇입니까?

분류에서Dev

$ _SERVER superglobals로 클래스의 상수 멤버를 정의하는 방법은 무엇입니까?

분류에서Dev

클래스의 가변 멤버를 자동으로 업데이트하는 방법은 무엇입니까?

분류에서Dev

파생 템플릿 클래스를 Boost :: python으로 래핑하는 방법은 무엇입니까?

분류에서Dev

친구 함수를 사용하여 연산자 == 외부 템플릿 클래스를 오버로드하는 방법은 무엇입니까?

분류에서Dev

C ++ 클래스의 개인 멤버로 일반 함수 포인터를 얻는 방법은 무엇입니까?

분류에서Dev

템플릿 클래스 자체 클래스를 기본 템플릿 유형으로 전달하는 방법은 무엇입니까?

분류에서Dev

템플릿 매개 변수를 enum 또는 enum 클래스로 강제하는 방법은 무엇입니까?

분류에서Dev

중첩 된 템플릿 매개 변수로 클래스를 작성하는 방법은 무엇입니까?

분류에서Dev

다른 템플릿 클래스의 내부 템플릿 클래스 생성자를 정의하는 방법은 무엇입니까?

분류에서Dev

메타 프로그래밍-__class__를 사용할 때 템플릿에서 클래스를 생성하는 방법은 무엇입니까?

분류에서Dev

배열 요소를 기반으로 템플릿 클래스의 튜플 생성을 자동화하는 방법은 무엇입니까?

분류에서Dev

멤버 매개 변수에 대한 포인터가있는 템플릿 클래스를 전문화하는 방법은 무엇입니까?

분류에서Dev

부모 클래스의 참조를 사용하여 자식 클래스의 멤버에 액세스하는 방법은 무엇입니까?

분류에서Dev

C ++에서 여러 클래스 유형에 대해 동일한 템플릿 멤버 함수를 지정하는 방법은 무엇입니까?

분류에서Dev

동일한 멤버 변수에 다른 특수 템플릿 클래스를 저장하는 방법은 무엇입니까?

분류에서Dev

중첩 템플릿의 정적 멤버를 정의하는 방법 (템플릿 클래스 내의 템플릿 클래스)

분류에서Dev

가변 클래스 템플릿의 멤버 템플릿 함수를 정의하는 방법

분류에서Dev

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

분류에서Dev

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

분류에서Dev

템플릿 클래스 멤버의 라인 외부 정의에 enable_if를 사용하는 방법

Related 관련 기사

  1. 1

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

  2. 2

    클래스 템플릿의 하위 클래스를 클래스 템플릿으로 만드는 방법은 무엇입니까?

  3. 3

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

  4. 4

    템플릿 유형에서 정적 멤버 초기화를 적용하는 방법은 무엇입니까? 또는 템플릿 유형에서 파생 된 모든 클래스의 수를 얻는 방법은 무엇입니까?

  5. 5

    멤버 함수 템플릿의 인스턴스화를 삭제하는 방법은 무엇입니까?

  6. 6

    힙 템플릿에 클래스가 사용되는 클래스 멤버로 핸들을 추가하는 방법은 무엇입니까?

  7. 7

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

  8. 8

    일부 템플릿 클래스를 하나의 템플릿으로 통합하는 방법은 무엇입니까?

  9. 9

    템플릿 클래스에서 템플릿 멤버 함수를 전문화하는 방법은 무엇입니까?

  10. 10

    $ _SERVER superglobals로 클래스의 상수 멤버를 정의하는 방법은 무엇입니까?

  11. 11

    클래스의 가변 멤버를 자동으로 업데이트하는 방법은 무엇입니까?

  12. 12

    파생 템플릿 클래스를 Boost :: python으로 래핑하는 방법은 무엇입니까?

  13. 13

    친구 함수를 사용하여 연산자 == 외부 템플릿 클래스를 오버로드하는 방법은 무엇입니까?

  14. 14

    C ++ 클래스의 개인 멤버로 일반 함수 포인터를 얻는 방법은 무엇입니까?

  15. 15

    템플릿 클래스 자체 클래스를 기본 템플릿 유형으로 전달하는 방법은 무엇입니까?

  16. 16

    템플릿 매개 변수를 enum 또는 enum 클래스로 강제하는 방법은 무엇입니까?

  17. 17

    중첩 된 템플릿 매개 변수로 클래스를 작성하는 방법은 무엇입니까?

  18. 18

    다른 템플릿 클래스의 내부 템플릿 클래스 생성자를 정의하는 방법은 무엇입니까?

  19. 19

    메타 프로그래밍-__class__를 사용할 때 템플릿에서 클래스를 생성하는 방법은 무엇입니까?

  20. 20

    배열 요소를 기반으로 템플릿 클래스의 튜플 생성을 자동화하는 방법은 무엇입니까?

  21. 21

    멤버 매개 변수에 대한 포인터가있는 템플릿 클래스를 전문화하는 방법은 무엇입니까?

  22. 22

    부모 클래스의 참조를 사용하여 자식 클래스의 멤버에 액세스하는 방법은 무엇입니까?

  23. 23

    C ++에서 여러 클래스 유형에 대해 동일한 템플릿 멤버 함수를 지정하는 방법은 무엇입니까?

  24. 24

    동일한 멤버 변수에 다른 특수 템플릿 클래스를 저장하는 방법은 무엇입니까?

  25. 25

    중첩 템플릿의 정적 멤버를 정의하는 방법 (템플릿 클래스 내의 템플릿 클래스)

  26. 26

    가변 클래스 템플릿의 멤버 템플릿 함수를 정의하는 방법

  27. 27

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

  28. 28

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

  29. 29

    템플릿 클래스 멤버의 라인 외부 정의에 enable_if를 사용하는 방법

뜨겁다태그

보관