summaryrefslogtreecommitdiffstats
path: root/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CXX/expr/expr.unary/expr.sizeof/p1.cpp')
-rw-r--r--test/CXX/expr/expr.unary/expr.sizeof/p1.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp b/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp
index 6a59e3d..aa76b3a 100644
--- a/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp
+++ b/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp
@@ -18,3 +18,31 @@ void test(A *a) {
x = sizeof(a->bitX = 3); // expected-error {{invalid application of 'sizeof' to bit-field}}
x = sizeof(a->bitY += 3); // expected-error {{invalid application of 'sizeof' to bit-field}}
}
+
+void test2() {
+ int x;
+ x = sizeof(void); // expected-error {{invalid application of 'sizeof' to an incomplete type 'void'}}
+ x = sizeof(int()); // expected-error {{invalid application of 'sizeof' to a function type}}
+ x = sizeof(test2()); // expected-error {{invalid application of 'sizeof' to an incomplete type 'void'}}
+ x = sizeof(test2); // expected-error {{invalid application of 'sizeof' to a function type}}
+}
+
+namespace pr16992 {
+
+template<typename T> struct ABC {
+ int func () {
+ return sizeof T; // expected-error {{expected parentheses around type name in sizeof expression}}
+ }
+};
+
+ABC<int> qq;
+
+template<typename T> struct ABC2 {
+ int func () {
+ return sizeof T::A;
+ }
+};
+
+struct QQ { int A; };
+ABC2<QQ> qq2;
+}
OpenPOWER on IntegriCloud