Если я могу предложить другой подход: наследовать класс вашего потока и создать виртуальную функцию Run ().
Причина в том, что хотя можно вызвать указатель на функцию из статической функции входа в потокВы сталкиваетесь с проблемой за проблемой.Например, вы можете решить проблему наличия правильной сигнатуры функции с помощью шаблонов и переменных параметров, но это не очень полезно, потому что функция ввода не будет знать что отправить вашей функции.
С другой стороны, получить из Thread легко и просто.Вы помещаете в конструктор все, что нужно знать потоку.Или, при желании, вы можете вызвать любое количество других функций и установить любое количество членов, прежде чем создавать поток.Как только вы создадите поток, функция входа в статический поток просто вызовет виртуальную функцию Run.Теперь ... функция Run является частью объекта потока, поэтому она знает все, что знает класс - нет проблем.
Дополнительные издержки, связанные с одиночным вызовом виртуальной функции и одним указателем в vtable, такжесмехотворно маленький по сравнению с тем, как легко.