I'm getting some mysterious syntax errors. Anywhere I declare grid::region& as the return type of a function, I get trouble. I expect it's some little typo mistake, but I can't find it after combing a while.
Code:
simulator.h:25: error: ‘region’ declared as a ‘virtual’ field
simulator.h:25: error: expected ‘;’ before ‘(’ token
simulator.h:48: error: expected ‘;’ before ‘(’ token
simulator.h:53: error: expected `;' before ‘private’
simulator.h:72: error: expected ‘;’ before ‘(’ token
simulator.h:73: error: expected `;' before ‘}’ token
Code:
class thread_method
{
  public:
    virtual bool wait() = 0;
    virtual grid::data_type get_sum(const grid::data_type & piece) = 0;
    virtual grid::data_type get_max(const grid::data_type & piece) = 0;
    virtual grid::region & region(std::vector<grid::region>::size_t index) = 0;
};

class single_thread : public thread_method
{
    public:
        bool wait() { return true; }
        grid::data_type get_sum(const grid::data_type & piece) { return piece; }
        grid::data_type get_max(const grid::data_type & piece) { return piece; }
        grid::region & region(std::vector<grid::region>::size_t index)
        {
            if(index) throw std::string("single_thread requested region index other than 0");
            return r;
        }
    private:
        grid::region r;
};
Code:
class grid
{
   .  .  .
      typedef std::vector<span> region;
   .  .  .
};