diff options
author | Jeffrey Yasskin <jyasskin@google.com> | 2010-06-05 01:39:57 +0000 |
---|---|---|
committer | Jeffrey Yasskin <jyasskin@google.com> | 2010-06-05 01:39:57 +0000 |
commit | 21d07e499e108752c9d63d7418f7d9b485f4e0e6 (patch) | |
tree | dd937829a34c455fea37accf4c383b6432ce8dd5 /docs | |
parent | 44eeebaa53c0137447f9bac5f55755e480d59597 (diff) |
Add an extension to avoid an error when a global template has the same name as
a member template, and you try to call the member template with an explicit
template argument. See PR7247
For example, this downgrades the error to a warning in:
template<typename T> struct set{};
struct Value {
template<typename T>
void set(T value) {
}
};
void foo() {
Value v;
v.set<double>(3.2); // Warning here.
}
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105518 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r-- | docs/UsersManual.html | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/docs/UsersManual.html b/docs/UsersManual.html index 5bff1af821..a53a1af5ff 100644 --- a/docs/UsersManual.html +++ b/docs/UsersManual.html @@ -386,6 +386,30 @@ by commenting them out.</p> and <a href="">-Wbaz</a>.</p> </dd> +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +<dt id="opt_Wambiguous-member-template"><b>-Wambiguous-member-template</b>: +Warn about unqualified uses of a member template whose name resolves +to another template at the location of the use.</dt> +<dd>This option, which defaults to on, enables a warning in the +following code:</p> + +<pre> +template<typename T> struct set{}; +template<typename T> struct trait { typedef const T& type; }; +struct Value { + template<typename T> void set(typename trait<T>::type value) {} +}; +void foo() { + Value v; + v.set<double>(3.2); +} +</pre> + +<p>C++ [basic.lookup.classref] requires this to be an error, but, +because it's hard to work around, Clang downgrades it to a warning as +an extension.</p> +</dd> + </dl> <!-- ======================================================================= --> |