#include <iostream>
int main(){
int a = 1;
long long b = 2;
std::cout<<(a<b);
std::cout<<std::min(a, b);
return 0;
}
> In file included from /usr/include/c++/4.8/bits/char_traits.h:39:0,
> from /usr/include/c++/4.8/ios:40,
> from /usr/include/c++/4.8/ostream:38,
> from /usr/include/c++/4.8/iostream:39,
> from sum_to.cpp:1: /usr/include/c++/4.8/bits/stl_algobase.h:239:5: note: template<class
> _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
> min(const _Tp& __a, const _Tp& __b, _Compare __comp)
> ^/usr/include/c++/4.8/bits/stl_algobase.h:239:5: note: template argument deduction/substitution failed: sum_to.cpp:7:29:
> note: deduced conflicting types for parameter ‘const _Tp’ (‘int’ and
> ‘long long int’)
> std::cout<<std::min(a, b);
---
Dank chris Kommentar in function overloading post Vorlage Argument Abzug erfolgt nicht Conversions berücksichtigt. Ein Vorlagenparameter kann nicht mit zwei Typen übereinstimmenWarum weniger als Operator akzeptiert verschiedene Arten von Parametern während std :: min nicht?
So std::min
fehlgeschlagen.
Warum <
würde funktionieren?
Weil * Konvertierungen berücksichtigt werden. – molbdnilo