
Hi,
yes, It's technically feasible. but the type of all the symbol in the expression can not be the build-in type. and gamma function should be a special version.
Yes there would be a special version and maybe several versions for each function. For example a binary function would have a rt/rt version if both arguments are runtime, ct/rt if the first one is compile-time, rt/ct if the second one is compile-time, and a ct/ct metafunction is both are compile-time. A compile-time argument would be either a literal constant (int_<X>) or an expression whose terminals are only literal constants. It's a huge work I know, but the exercise is pretty interesting :-)
BTW: I do not know how to upload source to this system, do you know how to do that?
You can ask a sandbox SVN access and work in it, or upload a zip to the Boost Vault. The following discussion from Boost-users seems to be related to what you're trying to do: http://article.gmane.org/gmane.comp.lib.boost.user/44237 Bruno