Пешите тесты

С добрым утром.

В процессе обкладывания тестами нового кода IBProvider, обнаружил интересную проблему у плюсового компилятора VS2017 (v15.9.4):

#include <iostream>

void TEST_FUNC(int)
{
 std::cout<<"TEST_FUNC(int)"<<std::endl;
}//TEST_FUNC(int)

void TEST_FUNC(short)
{
 std::cout<<"TEST_FUNC(short)"<<std::endl;
}//TEST_FUNC(short)

int main()
{
 TEST_FUNC(-1i16);
 TEST_FUNC((short)-1i16);
 TEST_FUNC(1i16);

 return 0;
}//main

На выходе видим:

TEST_FUNC(int)
TEST_FUNC(short)
TEST_FUNC(short)

Хотя ожидается:

TEST_FUNC(short)
TEST_FUNC(short)
TEST_FUNC(short)

-1i16 — это же вроде short, а не int.

Вот так вот расслабишься, а оно тебе ключом по голове.

Leave a Comment