2010-07-22 3 views
8

나는이 질문을 월요일에 나에게 요구했고, 나의 삶에 대해 나는 어떻게 대답해야할지 모른다. 내가 모르기 때문에, 나는 지금 매우 많이 발견하고 싶다. 호기심이이 고양이를 죽이고 있습니다. 두 개의 정수가 주어지면 컴파일시에 더 작은 정수를 반환하십시오.템플릿 메타 프로그래밍에서 비교하는 방법은?

template<int M, int N> 
struct SmallerOfMandN{ 
    //and magic happenes here 
}; 

포인터가 있습니까? (Boost MPL 오늘 밤 읽기 시작합니다.)

두 숫자의 최소라고하며, 당신이 그런 일을 할 mpl처럼 세계 무거운 무게 라이브러리가 필요하지 않습니다
+1

가 자신에게 *의 사본을 가져 오기 "C++ 템플릿 - 완전한 가이드"*을 어쩌면 * "현대 C++ 디자인"* 정말 주제에 시작하는 :) –

답변

17

: 물론

template <int M, int N> 
struct compile_time_min 
{ 
    static const int smaller = M < N ? M : N; 
}; 

int main() 
{ 
    const int smaller = compile_time_min<10, 5>::smaller; 
} 

그 경우를 당신은 쉽게 말할 수있는 C++ 0X가되었다

constexpr int compile_time_min(int M, int N) 
{ 
    return M < N ? M : N; 
} 

int main() 
{ 
    constexpr int smaller = compile_time_min(10, 5); 
} 
+0

그게 다야? 간단한 삼항 연산자? 그런 컴파일 시간에 잘 작동하는지 모르겠다. 감사합니다! 6 분 더 기다려야 해. 이 대답을 수락하십시오. – wheaties

관련 문제