This new builtin template allows for incredibly fast instantiations of templates like std::integer_sequence. Performance numbers follow: My work station has 64 GB of ram + 20 Xeon Cores at 2.8 GHz. __make_integer_seq<std::integer_sequence, int, 90000> takes 0.25 seconds. std::make_integer_sequence<int, 90000> takes unbound time, it is still running. Clang is consuming gigabytes of memory. Differential Revision: http://reviews.llvm.org/D13786 llvm-svn: 252036
15 lines
338 B
C++
15 lines
338 B
C++
// RUN: %clang_cc1 -std=c++14 -x c++-header %s -emit-pch -o %t.pch
|
|
// RUN: %clang_cc1 -std=c++14 -x c++ /dev/null -include-pch %t.pch
|
|
|
|
template <class T, T... I>
|
|
struct Seq {
|
|
static constexpr T PackSize = sizeof...(I);
|
|
};
|
|
|
|
template <typename T, T N>
|
|
using MakeSeq = __make_integer_seq<Seq, T, N>;
|
|
|
|
void fn1() {
|
|
MakeSeq<int, 3> x;
|
|
}
|