Open1

int64_t と long long の混用がエラーにならないケースがある

下記コード、ローカル環境だとエラーにならなかった。

#include <bits/stdc++.h>

int main() {
    int64_t a = 10;
    long long b = 11;
    auto m = std::min(a, b);
    std::cout << m << std::endl;
}

ローカルで実行したときにエラーにならなかったのに、AtCoderのコンテスト中にCEになって、最初だいぶ混乱した...
paizaで試すとエラーになる。

https://paiza.io/projects/aRMxvty46qk9uFxrrl140g?language=cpp
Main.cpp:6:14: error: no matching function for call to 'min'
    auto m = std::min(a, b);
             ^~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:383:5: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('long' vs. 'long long')
    min(const _Tp&, const _Tp&);
    ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3450:5: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'long'
    min(initializer_list<_Tp> __l, _Compare __comp)
    ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3444:5: note: candidate function template not viable: requires single argument '__l', but 2 arguments were provided
    min(initializer_list<_Tp> __l)
    ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:388:5: note: candidate function template not viable: requires 3 arguments, but 2 were provided
    min(const _Tp&, const _Tp&, _Compare);
    ^
1 error generated.

ローカル環境を改めて確認したところ、C++ Compiler が g++-10 になっていたので、これが原因かな?

ログインするとコメントできます