r188975 - Add a constexpr functionality test for static data member templates.
Larisse Voufo
lvoufo at google.com
Wed Aug 21 18:05:27 PDT 2013
Author: lvoufo
Date: Wed Aug 21 20:05:27 2013
New Revision: 188975
URL: http://llvm.org/viewvc/llvm-project?rev=188975&view=rev
Log:
Add a constexpr functionality test for static data member templates.
Modified:
cfe/trunk/test/SemaCXX/cxx1y-variable-templates_in_class.cpp
Modified: cfe/trunk/test/SemaCXX/cxx1y-variable-templates_in_class.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx1y-variable-templates_in_class.cpp?rev=188975&r1=188974&r2=188975&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/cxx1y-variable-templates_in_class.cpp (original)
+++ cfe/trunk/test/SemaCXX/cxx1y-variable-templates_in_class.cpp Wed Aug 21 20:05:27 2013
@@ -124,6 +124,25 @@ namespace non_const_init {
}
}
+#ifndef PRECXX11
+namespace constexpred {
+ class A {
+ template<typename T> constexpr T wrong; // expected-error {{member 'wrong' declared as a template}} \
+ // expected-error {{non-static data member cannot be constexpr; did you intend to make it const?}}
+ template<typename T> constexpr T wrong_init = 5; // expected-error {{non-static data member cannot be constexpr; did you intend to make it static?}}
+ template<typename T, typename T0> static constexpr T right = T(100);
+ template<typename T> static constexpr T right<T,int> = 5;
+ template<typename T> constexpr int right<int,T>; // expected-error {{member 'right' declared as a template}} \
+ // expected-error {{non-static data member cannot be constexpr; did you intend to make it const?}}
+ template<typename T> constexpr float right<float,T> = 5; // expected-error {{non-static data member cannot be constexpr; did you intend to make it static?}}
+ template<> static constexpr int right<int,int> = 7; // expected-error {{explicit specialization of 'right' in class scope}}
+ template<> static constexpr float right<float,int>; // expected-error {{explicit specialization of 'right' in class scope}}
+ template static constexpr int right<int,int>; // expected-error {{template specialization requires 'template<>'}} \
+ // expected-error {{explicit specialization of 'right' in class scope}}
+ };
+}
+#endif
+
struct matrix_constants {
// TODO: (?)
};
More information about the cfe-commits
mailing list