diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-06-17 22:11:49 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-06-17 22:11:49 +0000 |
commit | e46db90c9aa00cbe1cbc6211ab4c5181ce287ce4 (patch) | |
tree | ff141edad4598f3c5fd6028ee6d0dd3446ed3950 /clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp | |
parent | c662ec8bd33e6d81f9477c3a99751b64fd9a7be2 (diff) | |
download | llvm-e46db90c9aa00cbe1cbc6211ab4c5181ce287ce4.zip llvm-e46db90c9aa00cbe1cbc6211ab4c5181ce287ce4.tar.gz llvm-e46db90c9aa00cbe1cbc6211ab4c5181ce287ce4.tar.bz2 |
Objective-ARC++: infer template type arguments of
ownership-unqualified retainable object type as __strong. This allows
us to write, e.g.,
std::vector<id>
and we'll infer that the vector's element types have __strong
ownership semantics, which is far nicer than requiring:
std::vector<__strong id>
Note that we allow one to override the ownership qualifier of a
substituted template type parameter, e.g., given
template<typename T>
struct X {
typedef __weak T type;
};
X<id> is treated the same as X<__strong id>. At instantiation type,
the __weak in "__weak T" overrides the (inferred or specified)
__strong on the template argument type, so that we can still provide
metaprogramming transformations.
This is part of <rdar://problem/9595486>.
llvm-svn: 133303
Diffstat (limited to 'clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions