Я занимаюсь метапрограммированием, и сейчас мне нужно проверить, может ли функция-член данного типа вызываться с заданным набором аргументов, поэтому я делаю что-то вроде следующего (что сильно упрощается, если удалить всеконечно, это не важно для этой конкретной проблемы):
template<typename T, typename... Args>
struct argument_tester {
struct base: public T {
using T::my_member;
no my_member(...){}
};
typedef decltype(static_cast<base*>(0)->my_member(*static_cast<Args*...>(0))) type;
//verify return type
};
Конечно, это не работает с *static_cast<Args*...>(0)
, поэтому мой вопрос в том, есть ли способ распаковать пакет параметров в виде нулевых указателей с разыменованными ссылкамиесли это тот случай, когда я должен специализироваться для каждого количества аргументов.И конечно, если есть способ, как бы я это сделал?Я использую gcc 4.6
в случае, если это имеет значение для того, что возможно, а что нет.