From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- .../temp.decls/temp.variadic/partial-ordering.cpp | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp (limited to 'clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp') diff --git a/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp b/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp new file mode 100644 index 0000000..71bd6aa --- /dev/null +++ b/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp @@ -0,0 +1,61 @@ +// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s + +// Various tests related to partial ordering of variadic templates. +template struct tuple; + +template +struct X1 { + static const unsigned value = 0; +}; + +template +struct X1 > { + static const unsigned value = 1; +}; + +template +struct X1 > { + static const unsigned value = 2; +}; + +template +struct X1 > { + static const unsigned value = 3; +}; + +int check0[X1>::value == 0? 1 : -1]; +int check1[X1>::value == 2? 1 : -1]; +int check2[X1>::value == 1? 1 : -1]; +int check3[X1>::value == 2? 1 : -1]; +int check4[X1>::value == 3? 1 : -1]; + +// Partial ordering of function templates. +template +int &f0(T1, T2, Rest...); + +template +float &f0(T1, T2); + +void test_f0() { + int &ir1 = f0(1, 2.0, 'a'); + float &fr1 = f0(1, 2.0); +} + +template +int &f1(T1, T2, Rest...); + +template +float &f1(T1, T2, ...); + +void test_f1() { + int &ir1 = f1(1, 2.0, 'a'); +} + +template +int &f2(T1, T2, Rest...); + +float &f2(...); + +void test_f2() { + int &ir1 = f2(1, 2.0, 'a'); +} -- cgit v1.2.3