Я хотел бы создать вспомогательную оболочку для структуры типа варианта, чтобы сигнатура типа вызывала необходимые преобразования, например:
variant CreateVariant(bool value);
variant CreateVariant(int value);
variant CreateVariant(char *value);
Проблема в bool и int, поскольку они являются неявно конвертируемыми типами....
Так что для кода, подобного:
variant a = CreateVariant((BOOL)value);
variant a = CreateVariant((__int64)value);
variant a = CreateVariant(1);
Есть некоторые проблемы.
Как мне создать чистую оболочку, если мне нужно обработать bool как логическое ибеззнаковые / подписанные int / uints / longs / longlongs как целочисленные типы?
Для конструкторов классов я могу использовать ключевое слово explicit
, но я должен использовать функции внутри обновляемого кода.