<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Feb 1, 2011, at 11:45 AM, Larisse Voufo wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Let me see if I can rephrase this problem... <br>At this point, instantiation is no longer an issue. The issue is managing new DeclContext's.<br><br>Take the following definition of a concept:<br><br>concept A<typename T> {<br>
    void f(int) { }<br>}<br><br>This definition is parsed into a ConceptDecl  object <b>ContextA</b> where ConceptDecl is a DeclContext as well as a TemplateDecl.<br>When the concept is used on a generic function such as:<br>
<br>template<typename T><br>requires A<T><br>void func(T a) {<br>    f(a);<br>}<br><br>at the call f(a),  the lookup process finds the definition of f() in the DeclContext <b>ContextA</b>.  <br>Hence, the definition of func() is accepted. <br>
Let's refer to the found definition as <b>Fn</b>.<br><br>Now, when func() is used in the main, the lookup and instantiation-related processes are still finding and using that same definition of f(): Fn.<br></blockquote><div><br></div><div>That's wrong. You need to map from the concept's function f() to the corresponding function f() in the concept map.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>- Doug</div></div></body></html>