2012-12-29 5 views
4

그들은 합계를 찾기 위해 템플릿을 사용하라고했습니다. 왜이 기능이 작동하지 않습니까? 감사.왜이 템플릿 코드가 작동하지 않습니까?

template <typename A, typename B, typename C> 
auto add(A a, B b, C c = a + b) -> decltype(c) { 
    return c; 
} 

C++ 11에서는 선언 된 인수를 사용할 수 있다고 생각했습니다. 그런데 왜이게 작동하지 않습니까?

+0

어떻게 부르십니까? – billz

+0

@billz'add (5, 5)' –

답변

3

기본값의 값으로 인수를 사용할 수 없습니다. 또한 템플릿 유형 공제는 그렇게 작동하지 않습니다.

template <typename A, typename B> 
auto add(A a, B b) -> decltype(a + b) { 
    return a + b; 
} 

을 그리고 C++ 곧 형태 추론을 반환 할텐데 :

그냥 이런 식으로 물품.

+0

필자는 auto in function을 항상 사용하는 decltype을 사용해야합니까? –

+0

''decltype (a + c)'의'c'는 오타입니까? –

+1

@David 템플릿으로 된 인수가 포함 된 표현식의 경우처럼 표현식의 결과 유형을 예측할 수없는 경우에만 이 인자들이'float','int's, both of both, 또는 다른 것인지 알 수 없습니다. – jweyrich

관련 문제