Skip to content
Snippets Groups Projects
  • Douglas Gregor's avatar
    e559ca16
    Objective-ARC++: infer template type arguments of · e559ca16
    Douglas Gregor authored
    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>.
    
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133303 91177308-0d34-0410-b5e6-96231b3b80d8
    e559ca16
    History
    Objective-ARC++: infer template type arguments of
    Douglas Gregor authored
    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>.
    
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133303 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.