
Jonathan Turkanis wrote:
Iain K. Hanson wrote:
Thanks for the history that I've sniped. I understand fully what you mean. I have had the similar problems with my sockets library. The problem IMHO is a lack of meta-programming skills ( I've certainly suffered from ). However, Czarnecki & Eisenecker showed that C++ is Church Turring complete at compile time so as long as this conjecture holds it has to be doable.
I also have the suspicion that it is doable, or at least that a blended approach is possible in which you get ruthless efficiency as long as you don't use certain features. But I wouldn't draw to many conclusions from computational completeness. There are still some things you can't do in metaprograms, such as write "Hello World" to standard output. ;-)
Jonathan
Well, perhaps not 'standard' output... ;) template < typename Unused > void meta_main ( ) { Hello_world; This_is_a_message_that_is_printed_to_the_list_of_errors; } int main ( ) { meta_main < void > ( ); return 0; } Output: 'Hello_World' : undeclared identifier 'This_is_a_message_that_is_printed_to_the_list_of_errors' : undeclared identifier - Jason