Skip to content
  1. Jan 21, 2011
  2. Jan 20, 2011
  3. Jan 19, 2011
    • Douglas Gregor's avatar
      Downgrade the "variadic templates are a C++0x feature" error to an · b25d8c3a
      Douglas Gregor authored
      ExtWarn. We want variadic templates to be usable in libc++/libstdc++
      headers even when we're in C++98/03 mode, since it's the only clean
      way to implement TR1 <functional>.
      
      llvm-svn: 123852
      b25d8c3a
    • Douglas Gregor's avatar
      Implement basic support for the use of variadic templates and blocks · 476e3029
      Douglas Gregor authored
      together. In particular: 
        - Handle the use of captured parameter pack names within blocks
        (BlockDeclRefExpr understands parameter packs now)
        - Handle the declaration and expansion of parameter packs within a block's
        parameter list, e.g., ^(Args ...args) { ... })
        - Handle instantiation of blocks where the return type was not
        explicitly specified. (unrelated, but necessary for my tests).
      
      Together, these fixes should make blocks and variadic templates work
      reasonably well together. Note that BlockDeclRefExpr is still broken
      w.r.t. its computation of type and value dependence, which will still
      cause problems for blocks in templates.
      
      llvm-svn: 123849
      476e3029
    • Douglas Gregor's avatar
      Implement support for non-type template parameter packs whose type is · 0231d8da
      Douglas Gregor authored
      a pack expansion, e.g., the parameter pack Values in:
      
        template<typename ...Types>
        struct Outer {
          template<Types ...Values>
          struct Inner;
        };
      
      This new implementation approach introduces the notion of an
      "expanded" non-type template parameter pack, for which we have already
      expanded the types of the parameter pack (to, say, "int*, float*",
      for Outer<int*, float*>) but have not yet expanded the values. Aside
      from creating these expanded non-type template parameter packs, this
      patch updates template argument checking and non-type template
      parameter pack instantiation to make use of the appropriate types in
      the parameter pack.
      
      llvm-svn: 123845
      0231d8da
    • Douglas Gregor's avatar
      NonTypeTemplateParmDecls always have TypeSourceInfo. There's no sense · a91ad2da
      Douglas Gregor authored
      in pretending otherwise.
      
      llvm-svn: 123839
      a91ad2da
    • Douglas Gregor's avatar
      Warn about the use of unparenthesized |= in conditionals (which may be · 2d4f64f4
      Douglas Gregor authored
      a typo for !=). Fixes PR9001, from Hans Wennborg!
      
      llvm-svn: 123836
      2d4f64f4
    • John McCall's avatar
      When building the copy expression for a __block variable, make sure · 8b7fd8f1
      John McCall authored
      there's a respectable point of instantiation.  Also, make sure we do
      this operation even when instantiating a dependently-typed variable.
      
      llvm-svn: 123818
      8b7fd8f1
Loading