Adds initial support for matching constrained out-of-class member function definitions to their declarations. Like so:
template<typename T> struct S { void f(const T& x) requires Copyable<T>(); }; template<typename T> void S<T>::f() requires Copyable<T>() { ... }; This does not a complete solution. It won't correctly match S<T> against specializations (if any exist), nor will it match f, if f is declared as a member function template. I'll address this after some changes to class templates. Changelog: 2013-06-24 Andrew Sutton <andrew.n.sut...@gmail.com> * gcc/cp/parser.c (cp_parser_init_declarator): Parse template requirements for out-of-class member definitions. * gcc/cp/decl2.c (check_classfn): Include match out-of-class definitions using constraints. * gcc/cp/constraint.cc (equivalently_constrained). Use get_constraints. (more_constrained). Use get_constraints. Andrew
memfun.patch
Description: Binary data