Есть ли макрос, что-то вроде BOOST_AUTO, который позволял бы эмулировать автоматическое возвращение типа возврата функции в C ++?
Я имею в виду что-то типа трейлинг-возврата, http://en.wikipedia.org/wiki/C%2B%2B0x#Alternative_function_syntax
вот что у меня есть:
using namespace boost::fusion;
#define AS_VECTOR(var, expr) BOOST_AUTO(var, as_vector(expr))
AS_VECTOR(b, erase(arguments, advance_c<N>(begin(arguments))));
AS_VECTOR(a, insert_range(b, advance_c<N>(begin(b)), vector_tie(i)));
while (i < upper()(a))
{
//apply<T>(*this, f, a);
++i;
}
#undef AS_VECTOR
создание экземпляров erase и insert_range создает действительно сумасшедшие шаблоны.
Поэтому мне было интересно, что можно заменить макрос AS_VECTOR на функцию, но нет необходимости объявлять тип возвращаемого значения.
полный исходный код находится здесь: Предложения по синтаксису для краткого выражения математической формулы
В основном, в приведенном выше фрагменте и в определении оператора в приведенной выше ссылке, я бы идеально хотел вывести тип возвращаемого значения из тела функции / оператора (поскольку он только однострочный). Я пытался использовать BOOST_TYPEOF, однако, как правило, у меня нет контроля над тем, как создаются параметры, так что это не работает.
например, приведенный выше фрагмент кода на самом деле replace_at
. попытка превратить его в отдельную функцию приводит к возвращаемому параметру, который имеет глубину 6-7 шаблонов.
Выполнимо, но очень грязно.
Если это не то, что может быть реализовано, это не страшно. прямо сейчас я справляюсь с макросами, так что если ничего другого, я просто буду продолжать их использовать.
спасибо