PR c++/24275
* pt.c (instantiate_decl): Instantiate the initializer of
a static data member in the namespace containing the class
containing the static data member.
PR c++/24275
* g++.dg/template/static19.C: New test.
From-SVN: r105173
&& !DECL_INITIAL (d)
&& DECL_INITIAL (code_pattern))
{
+ tree ns = decl_namespace_context (d);
+ push_nested_namespace (ns);
push_nested_class (DECL_CONTEXT (d));
DECL_INITIAL (d)
= tsubst_expr (DECL_INITIAL (code_pattern),
args,
tf_error | tf_warning, NULL_TREE);
pop_nested_class ();
+ pop_nested_namespace (ns);
}
/* We restore the source position here because it's used by
--- /dev/null
+// PR c++/24275
+
+template <bool val> struct bool_var {
+ static const bool value = val;
+};
+namespace is_inc_ {
+ struct any {
+ template <class T> any(T const&);
+ };
+ int operator++(any const&);
+ template <class T> struct impl {
+ static T &x;
+ static const bool value = sizeof(++x) == 1;
+ };
+}
+template<typename T> struct is_incr : bool_var< is_inc_::impl<T>::value> {};
+struct not_incr{};
+typedef int sa1[ is_incr<not_incr>::value ? -1 : 1];