hungarian notation is evil (was Re: Do I always have to write "self." ?)

Michael Hudson mwh21 at cam.ac.uk
Fri May 5 20:36:51 CEST 2000


Alex <cut_me_out at hotmail.com> writes:

> > I like how C++ templates are Turing complete.  That means trying to
> > determine whether or not a C++ program will even compile is equivalent
> > to the Halting Problem.
> 
> How do you do the equivalent of a for loop using templates?

Noisily; it's been a while since I played with this kind of thing, but
hopefuly this will give you some idea:

#include <iostream>

template< int N >
class SumOfSquares {
public:
    enum { val = N*N+SumOfSquares<N-1>::val };
};

template<>
class SumOfSquares<0> {
public:
    enum { val = 0 };
};

int main(void) {
  cout << SumOfSquares<7>::val << endl;
}

then:

[mwh21 at atrus C]$ g++ templatefun.cc
[mwh21 at atrus C]$ ./a.out 
140

[ God, I know C++ too well - I hadn't written any for months before
  that, and I get template meta-programming right basically first
  time... (after I remebered the syntax of enums!) ]

also-known-as-"how-to-crush-your-C++-compiler"-ly y'rs
Michael

-- 
  A student, in hopes of understanding the Lambda-nature, came 
  to Greenblatt.  As they spoke a Multics system hacker walked
  by.  "Is it true", asked the student, "that PL-1 has many of 
  the same data types as Lisp?"  Almost before the student had
  finished his  question, Greenblatt  shouted, "FOO!", and hit 
  the student with a stick.                                -- AI koan



More information about the Python-list mailing list