Summary:
This code is not strictly correct per c++ spec section 14.2.4:
> When the name of a member template specialization appears after . or -> in a
> postfix-expression or after a nested-name-specifier in a qualified-id, and the
> object or pointer expression of the postfix-expression or the
> nested-name-specifier in the qualified-id depends on a template parameter
> (14.6.2) but does not refer to a member of the current instantiation
> (14.6.2.1), the member template name must be prefixed by the keyword template.
> Otherwise the name is assumed to name a non-template.
This causes clang to complain, but gcc is lax about this, as usual.
Test Plan: compile stuff that use this.
Reviewed By: delong.j@fb.com
FB internal diff:
D643515
*/
template <typename ReturnType=double>
ReturnType avg() const {
- return total_.avg<ReturnType>();
+ return total_.template avg<ReturnType>();
}
/*