Итак, я написал что-то вроде этого
#include <iostream>
using namespace std;
void f(int32_t i)
{
cout << "int32: " << i << endl;
}
void f(int16_t i)
{
cout << "int16: " << i << endl;
}
void f(int8_t i)
{
cout << "int8: " << i << endl;
}
void f(uint32_t i)
{
cout << "uint32: " << i << endl;
}
void f(uint16_t i)
{
cout << "uint16: " << i << endl;
}
int main() {
uint8_t i = 0u;
f(i);
return 0;
}
И это напечатано
int32: 0
Я немного запутался:
-
Это четко определенное поведение, или это конкретная реализация?
-
Какие правила определяют, какая перегрузка здесь используется и в какой тип преобразуется переменная?