Skip to content

a simple compiling error with clang in macOS  #728

@Teaonly

Description

@Teaonly

Building error in macOS (version 10.12.3)
Code commit version:

commit 0a893abc7be4dbaf609c1db180dcc148853ad208
Author: Adam Lerer <alerer@fb.com>
Date:   Sat Feb 11 18:49:32 2017 -0800

    fix serialization bug for large files

Error message:

In file included from torch/csrc/serialization.cpp:7:
In file included from /Users/teaonly/Workspace/github/pytorch/torch/lib/tmp_install/include/TH/THGenerateAllTypes.h:8:
In file included from generic/serialization.cpp:1:
/Users/teaonly/Workspace/github/pytorch/torch/csrc/generic/serialization.cpp:106:27: error: no matching function for call to 'min'
      size_t to_convert = std::min(size - i, buffer_size);
                          ^~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2589:1: note: candidate template ignored: deduced conflicting types
      for parameter '_Tp' ('long long' vs. 'long')
min(const _Tp& __a, const _Tp& __b)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2599:1: note: candidate template ignored: could not match
      'initializer_list<type-parameter-0-0>' against 'long long'
min(initializer_list<_Tp> __t, _Compare __comp)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2581:1: note: candidate function template not viable: requires 3
      arguments, but 2 were provided
min(const _Tp& __a, const _Tp& __b, _Compare __comp)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2607:1: note: candidate function template not viable: requires single
      argument '__t', but 2 arguments were provided
min(initializer_list<_Tp> __t)

The clang will report error in the following code:

 54     for (int64_t i = 0; i < self->size; i += buffer_size) {
 55       size_t to_convert = std::min(self->size - i, buffer_size);

self->size is long
i is int64_t
buffer_size is long
so 'self->size-i' is a long long,

clang will report error when different type in std::min.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions