2017-10-23 7 views
-2

나는 다음과 같은 코드가있는 경우 :부스트 128 비트 정수와 C++ 최대 함수를 사용하는 방법을

#include <boost/multiprecision/cpp_int.hpp> 
using namespace boost::multiprecision 


int main() 
{ 
    int128_t a = Func_a() 
    int128_t b = Func_b() 

    std::cout << std::max(a, b) << std::endl; 
    return 0; 
} 

을 내가 ++ g을 사용하여 우분투에서 컴파일하는 경우, 나는 다음과 같은 오류 얻을 :

오류 : 할당에서 'const boost :: multiprecision :: number>'를 'int64 {aka long long int}'로 변환 할 수 없습니다.

두 int128_t 숫자를 비교하여 어느 것이 더 큰지 알아 보는 올바른 방법은 무엇입니까?

편집 : std :: max를 사용하고 있습니다.

+0

어디에서'max'를 (를) 사용하고 있습니까? 그것은 어떤 함수인가, 아니면'std :: max'가 될 것인가? – Tas

+0

std :: max를 의미합니다. 이제 업데이트되었습니다. –

+1

코드 샘플이 너무 손상되어 고려조차하지 않습니다. 질문은 잘못되었습니다 : http://coliru.stacked-crooked.com/a/c3675c01da00e0aa – sehe

답변

1

코드 (누락 된 세미콜론 제외)는 오류없이 컴파일되고 실행됩니다.

그러나, 컴파일러 메시지에 따라, 나는 컴파일러가이 INT64 말한다 때문에

int128_t a = Func_a(); // are you really sure it is int128_t? 

에서 왼쪽이하는 boost::multiprecision::int128_t 아니라고 의심하고있다.