Is it good practice to require the type in a class template to respond to a certain func?
<p>The std lib has types in class templates that requires the type to override certain OPERATORS, for exmple, the type we use in std::map requires the type to support the &lt; operator.</p>

<p>But is it good to require certain FUNCTIONS? Consider this silly example</p>

<pre><code>template &lt;typename T&gt; struct Foo {
  T t;
  Foo() {
    t.push_back(0);
  }
};

int main() {
  Foo&lt;std::vector&lt;int&gt;&gt; foo;
  return 0;
}
</code></pre>

<p>there i've created a class template Foo and it's type needs to have a push_back member func. Is this design acceptable/common to c++ coders?</p>
