llvm-project/clang
Richard Smith 4ae5ec8268 Improve support for 'decltype(auto)' in template template parameter matching.
A 'decltype(auto)' parameter can match any other kind of non-type template
parameter, so should be usable in place of any other parameter in a template
template argument. The standard is sadly extremely unclear on how this is
supposed to work, but this seems like the obviously-correct result.

It's less clear whether an 'auto' parameter should be able to match
'decltype(auto)', since the former cannot be used if the latter turns out to be
used for a reference type, but if we disallow that then consistency suggests we
should also disallow 'auto' matching 'T' for the same reason, defeating
intended use cases of the feature.

llvm-svn: 295866
2017-02-22 20:01:55 +00:00
..
INPUTS
bindings [libclang] [OpenCL] Expose half type. 2017-02-10 15:51:11 +00:00
cmake [CMake] Add Fuchsia toolchain CMake cache files 2017-02-17 19:28:54 +00:00
docs Update Bugzilla URLs in docs 2017-02-17 08:26:54 +00:00
examples Add LLVMOption to clang-interpreter, corresponding to r291938. 2017-01-14 08:54:05 +00:00
include Add more ODR checking. 2017-02-22 01:11:25 +00:00
lib Improve support for 'decltype(auto)' in template template parameter matching. 2017-02-22 20:01:55 +00:00
runtime [sanitizer] Passthrough CMAKE_OSX_DEPLOYMENT_TARGET and CMAKE_OSX_SYSROOT when building compiler-rt from clang/runtime/CMakeLists.txt 2016-12-15 23:20:54 +00:00
test Improve support for 'decltype(auto)' in template template parameter matching. 2017-02-22 20:01:55 +00:00
tools Cleanup: use range-based for rather than separate calls to begin and end. 2017-02-18 01:14:43 +00:00
unittests clang-format: [JS] Improve line-wrapping behavior of template strings. 2017-02-20 14:51:16 +00:00
utils Improve workaround for Sphinx's lack of support for command line options containing '+', '.' etc. to be more stable as the set of options changes. 2017-01-27 01:54:42 +00:00
www [c++1z] Mark constexpr lambdas as done on status page and start advertising 2017-02-21 23:58:29 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt clang/CMakeLists.txt: Rework r294954 -- use file(TO_CMAKE_PATH). 2017-02-19 03:17:31 +00:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/