У меня есть функция (и конструктор), которая должна принимать целочисленные значения и значения с плавающей запятой. На самом деле я хочу, чтобы он взял int64_t
или long double
, так что я хочу,
class Foo {
public:
Foo(int64_t value=0);
Foo(long double value);
};
Однако, если я сделаю это и попробую Foo f = 1;
, компилятор пожалуется на неоднозначность преобразования из int
в Foo
. Хорошо, но если я изменю первый конструктор на int32_t
, такой двусмысленности не будет. Может кто-нибудь объяснить мне, почему это так.