Лямбда-функция не может вызвать статические функции параметра шаблона функции

Итак, у меня что-то настроено примерно так:

template<typename T> void example()
{
 std::function<int (byte*)> test = [=](byte* start) -> int
 {
  return T::magic(start);
 }
}

Игнорируя, насколько "нечистым" является выполнение этих голых вызовов, он также не компилируется, давая следующие ошибки:

'T' : is not a class or namespace name
'magic': identifier not found

Есть ли способ вызвать общее имя типа T, предполагая, что я всегда буду вызывать example () с классом, имеющим функцию magic (byte * start)? Конечно, мне не нужно повторно объявлять эту функцию-шаблон для каждого отдельного класса, который будет это делать.

Я делаю это в VC ++ 2010, и, похоже, это может быть ошибка компилятора. Какие-нибудь возможные обходные пути?

6
задан Qantas 94 Heavy 1 May 2014 в 09:09
поделиться