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で試すとエラーになる。
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
になっていたので、これが原因かな?