Предположим, у меня есть список типа list<boost::any>
, в котором есть неизвестный тип. Теперь предположим, что я хочу применить некоторую операцию к полиморфным элементам списка. В этом случае рассмотрим оператор +. Предположим, что я знаю, что список всегда будет содержать однородный набор объектов, поддерживающих оператор+, и я хочу получить результат применения оператора+ («сумма» в одном смысле) между каждым элементом списка в новый boost:: любой. Что-то вроде этого:
boost::any sum(list<boost::any> lst) {
// return lst[0]+lst[1]+lst[2] etc
}
Без перечисления всех возможных типов, которые могут поддерживать оператор +, есть ли способ сделать это? Я чрезвычайно открыт для сумасшедших идей.
(У меня действительно есть веская причина для этого... Я реализую интерпретатор)