>I decided to approach it, assuming that I knew absolutely nothing about the type of Token ...
Nice. In fact, I'll accept that as a viable solution.

I also would have accepted a recursive solution:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
typedef string Token;
void push_frame_arg ( Token tok )
{
cout<< tok <<'\n';
}
bool add_arguments ( istream& tokenizer )
{
Token tok;
if ( tokenizer>> tok ) {
add_arguments ( tokenizer );
push_frame_arg ( tok );
}
}
int main()
{
istringstream tokenizer ( "arg1 arg2 arg3" );
Token tok;
add_arguments ( tokenizer );
}
>Which would lead to the question "if not the standard library, what
>library are we to use and where can we find the documentation for it?".
Which would be a good question.
>But you would have to accept a solution using the standard library
>given your stated requirements since they lack mention of
Nope. The point of many of these questions is to figure out exactly what the requirements are before trying to come up with a solution. Vague requirements are very common with clients, and you're basically saying that I (as the client) have to accept your solution as final even if it's your fault that the solution is worthless. How many clients do you think would pay if you tried to pull that?