recently stumbled upon the problem in C++. There is an int mx variable and there is a set of SET VALS, you need to transfer the MX variable to the Max value (MX, VALS.SIZE ()), but Max breaks down. Tell me how to wipe the problem please.
int mx = 0;
set & lt; int & gt; VALS;
MX = MAX (valss.size (), MX);
Answer 1, Authority 100%
The fact is that max
is a function template. Let’s look at the announcement of this template:
template & lt; Class T & GT;
constexpron const t & amp; max (Const t & amp; a, const t & amp; b);
As can be seen, two arguments have the same type. Now let’s look at your call Max
:
max (valss.size (), mx);
So what is the problem? The problem is that valss.size ()
returns the value that the size_t
type is. And MX
has the type int
. It turns out that the types are different and the compiler cannot determine the desired type. Therefore, you need to explicitly specify which type to use. To do this, simply specify the desired type in the angular brackets after the name of the function. Like this:
max & lt; int & gt; (valss.size (), mx);
Answer 2, Authority 80%
We need to translate MX
in the std :: size_t
>or initially it is so created.
std :: max (valss.size (), static_cast & lt; std :: size_t & gt; (mx));