title: Visitor pattern with multiple argument
body: <p>Is it possible to implement the visitor pattern such that:</p>
  
  <ol>
  <li><p>Multiple visitors can be used on the acceptor.</p></li>
  <li><p>The acceptor must not change when new visitors are added.</p></li>
  <li><p>Visitors might have to receive arguments and the number and types of arguments are different between visitors.</p></li>
  </ol>
  
  <p>An example is a Shape hierarchy class and operations that can be performed on the shapes. If the operations does not have to receive any arguments, than each operation can be a visitor and inherit from Visitor class, and each shape will implement the accept method:</p>
  
  <pre><code>void SomeShape::accept(Visitor* visitor)
  {
      visitor-&gt;visit(*this);
  }
  </code></pre>
  
  <p>However, is there a way to use the visitor pattern in case each visitor need to receive additional arguments? Are there any good alternatives?</p>