Я знаю, что нет способа сделать это напрямую, но я надеюсь, что есть какой-то нестандартный способ обойти эту проблему.
Мы создаем API для работы пользователей, и они будут передавать строку данных, которая получает значение на основе строковая информация. Эти значения относятся к разным типам. По сути, мы хотели бы позволить им это сделать:
Код: Выделить всё
int = RetrieveValue(dataString1);
double = RetrieveValue(dataString2);
// Obviously, since they don't know the type, they wouldn't use int =.... It would be:
AnotherFunction(RetrieveValue(dataString1)); // param of type int
AnotherFunction(RetrieveValue(dataString2)); // param of type double
Сейчас мы настраиваем его так, чтобы они вызывали:
Код: Выделить всё
int = RetrieveValueInt(dataString1);
double = RetrieveValueDouble(dataString2);
К сожалению, нам не разрешено использовать внешние библиотеки, поэтому не используйте Boost.
Есть ли способы обойти это?
Просто поясню: я понимаю, что C++ изначально не может этого сделать. Но должен быть какой-то способ обойти это. Например, я думал о том, чтобы сделать RetieveValue(dataString1, GetType(dataString1)). На самом деле это ничего не исправляет, поскольку GetType также может иметь только один тип возвращаемого значения. А мне нужно что-то подобное.
Я понимаю, что этот вопрос уже задавался, но в другом смысле. Я не могу использовать ни один из очевидных ответов. Мне нужно что-то совершенно нестандартное, чтобы оно мне пригодилось, чего не было ни в одном из ответов на другой заданный вопрос.
Подробнее здесь: https://stackoverflow.com/questions/148 ... eturn-type