Получить аргументы функции в виде кортежа в C ++

Считайте, что у меня есть объявления функций, подобные этим:

void foo(int x, float y);

class X {
  void anotherFoo(double a, int c);
};

Как я могу получить кортеж, который соответствует аргументам функции? В приведенном выше случае это будет:

boost::tuple<int, float>
boost::tuple<X*, double, int>

или даже лучше с типом результата как 0-й элемент:

boost::tuple<void, int, float>
boost::tuple<void, X*, double, int>

Я знаю, что boost :: function_types :: parameter_types может делать именно это. Однако меня интересует принцип того, как это реализовано.

7
задан Karel Petranek 22 November 2011 в 09:37
поделиться