News for hackers. Stuff that matters.
Re:An Idiot's Guide to C++ Templates - Part 1 by X-Istence on Tuesday April 23, 2013 @12:23PM (#5596087)
Instead of me trying to understand Perl, tell me what problem you are trying to solve that having an hypothetical iterator<foo> would help solve.
Re:An Idiot's Guide to C++ Templates - Part 1 by btilly on Tuesday April 23, 2013 @12:35PM (#5596173)
The interface that I describe can be backed by a collection, data streamed externally (eg from a file), or by something generated on the fly. Therefore you can write code for all three cases that looks very similar.

That article demonstrated the power of this idea by writing code that fairly efficiently generates the Hamming sequence, which consists of all positive integers whose only divisors are 2, 3, and 5. (So 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, ...)

Re:An Idiot's Guide to C++ Templates - Part 1 by X-Istence on Tuesday April 23, 2013 @12:52PM (#5596277)
You can create your own type of iterator that when dereferenced spits out the next number/item, So long as your "end" iterator never matches your "current" iterator it will continue going on. Your "done" function is when "current" and "end" match. "next()" is "++current".
Re:An Idiot's Guide to C++ Templates - Part 1 by reddit_clone on Tuesday April 23, 2013 @12:43PM (#5596222)
Indeed. First off, it is unrealistic to expect to rewrite perl/python scripts (much higher level scripting languages) in C++ and expect the same level of succinctness.

C++ is for larger , high performance applications.

The piper needs to be paid one way or another. If you rewrite a perl script in C++ for performance, the relative increase in verbosity is the price you pay.

Re:An Idiot's Guide to C++ Templates - Part 1 by btilly on Tuesday April 23, 2013 @04:22PM (#5597720)
I accept that a price has to be paid for performance.

However I believe that a substantial amount of verbosity could be removed without impacting said performance. In fact C++11 removes some with type deduction.

I also get tired of typing some_big_type foo = some_big_type(); - is there a way to say, "I want this thing, and I want it to get the obvious default initialization?" Because what I type now is straight from the redundant department of redundancy department. (Yes, a typedef can make that shorter. You still write the idea twice.)

Re:An Idiot's Guide to C++ Templates - Part 1 by mpyne on Tuesday April 23, 2013 @09:50PM (#5599185)
Try auto foo = some_big_type();

If you're not talking about initialization, but instead talking about construction, just do some_big_type foo; (no parens needed).

Re:An Idiot's Guide to C++ Templates - Part 1 by btilly on Thursday April 25, 2013 @12:00AM (#5605638)
If you're not talking about initialization...

I thought I was very clear when I said: "I want this thing, and I want it to get the obvious default initialization?"

I often wound up typing something like this:

std::vector< my_big_type > list_foo = std::vector< my_big_type >();

It seemed useless the first time, and just got sillier as time went on.

Re:An Idiot's Guide to C++ Templates - Part 1 by X-Istence on Wednesday April 24, 2013 @03:29AM (#5600301)
some_big_type foo;

Now foo has been created.

Want to pass parameters to its constructor:

some_big_type foo(parameters, go, here);

foo has been initialised.

Need a pointer?

auto *foo = new some_big_type foo(parameters, go, here);