aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/PCHReader.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-11-11 23:06:43 +0000
committerDouglas Gregor <dgregor@apple.com>2009-11-11 23:06:43 +0000
commitdb0d4b751e83b8841b8f48f913f17e50467f13d4 (patch)
treedacbc00c291d96ddf195da7a3a59f41f5cfaa56b /lib/Frontend/PCHReader.cpp
parent8406aedf4782771e520614ee379594dc0a4f7d5f (diff)
Template argument deduction for template template parameters. This
permits, among other things, ripping apart and reconstructing templates via partial specialization: template<typename T> struct DeepRemoveConst { typedef T type; }; template<typename T> struct DeepRemoveConst<const T> { typedef typename DeepRemoveConst<T>::type type; }; template<template<typename> class TT, typename T> struct DeepRemoveConst<TT<T> > { typedef TT<typename DeepRemoveConst<T>::type> type; }; Also, fix a longstanding thinko in the code handling partial ordering of class template partial specializations. We were performing the second deduction without clearing out the results of the first deduction. It's amazing we got through so much code with such a horrendous error :( git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86893 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/PCHReader.cpp')
0 files changed, 0 insertions, 0 deletions