A look at Modern CMake
by Deniz Bahadir
by Deniz Bahadir
Short and sweet.
by Jonathan Müller
From the article:
The C++ special member functions are...
By Adrien Hamelin | Mar 4, 2019 01:08 PM | Tags: intermediate
Quick A: it tries to convert to int.
Recently on SO:
In comparing the conversions needed by different overloaded functions, a "promotion" is considered a better conversion sequence than a standard "conversion". Every arithmetic type can promote to at most one other type. (Promotions are also used when passing an argument to a C-style variadic function like printf. The unary + operator can be used to force a promotion of an arithmetic expression, like +n.)
For integer types which are not character types or bool, the promoted type is:
- If int can represent all the values of the original type, then int;
- Otherwise, if unsigned int can represent all the values of the original type, then unsigned int;
- Otherwise, the original type itself (promotion does nothing)
In your example, when comparing the overloaded functions, an "exact match" would be best, but there is no function taking exactly int8_t (or int8_t& or const int8_t&). The promoted type of uint8_t is int, since it's required to support a range much larger than 0-255. And apparently on your system, int32_t is an alias for int, so the function void f(int32_t); requires only a promotion on the argument. The other functions are all viable, but require an integer conversion on the argument. So void f(int32_t); is considered the best overload.
So the technical answer to the question is that it is implementation specific, but only because of the relationship between int and the <cstdint> types, not because of the overload resolution rules.
A little different angle on TMP presents Jonathan O'Connor
by Jonathan O'Connor
Guy Davidson speaking about standardization and algebraic libraries
by Guy Davidson
Arne Mertz presenting at Meeting C++:
by Arne Mertz
A talk on cross platform C++
by Marc Goodner
A great talk on how to write reliable code
by Egor Bredikhin
The last video from the B Track of Meeting C++ 2018:
by Goran Arandjelović
A great talk about the possibilities of generic programming at compile time
by Hana Dusíková