Como passar uma função de modelo em uma lista de argumentos de modelo

Suponha que eu tenha umtemplate função:

template<typename T>
T produce_5_function() { return T(5); }

Como posso passar isso todotemplate para outrotemplate?

E seproduce_5_function era um functor, não haveria problema:

template<typename T>
struct produce_5_functor {
  T operator()() const { return T(5); }
};
template<template<typename T>class F>
struct client_template {
  int operator()() const { return F<int>()(); }
};
int five = client_template< produce_5_functor >()();

mas eu quero poder fazer isso com um template de função raw:

template<??? F>
struct client_template {
  int operator()() const { return F<int>(); }
};
int five = client_template< produce_5_function >()();

Eu suspeito que a resposta é "você não pode fazer isso".

questionAnswers(2)

yourAnswerToTheQuestion