* typeck.c (build_const_cast): Disallow use of const_cast to
anything but a pointer or reference type.
From-SVN: r26708
+1999-04-30 Mark Mitchell <mark@codesourcery.com>
+
+ * typeck.c (build_const_cast): Disallow use of const_cast to
+ anything but a pointer or reference type.
+
1999-04-30 Nathan Sidwell <nathan@acm.org>
* decl.c (cp_finish_decl): Don't permit arrays of abstract or
if (type == error_mark_node || expr == error_mark_node)
return error_mark_node;
+ if (!POINTER_TYPE_P (type) && !TYPE_PTRMEMFUNC_P (type))
+ {
+ cp_error ("`%T' is not a pointer, reference, or pointer-to-member type",
+ type);
+ cp_error ("as required by const_cast");
+ return error_mark_node;
+ }
+
if (TREE_CODE (expr) == OFFSET_REF)
expr = resolve_offset_ref (expr);
--- /dev/null
+// Build don't link:
+// Origin: Mark Mitchell <mark@codesourcery.com>
+
+struct A {
+};
+
+int main()
+{
+ A a;
+ const_cast<const A>(a); // ERROR - const_cast requires pointer/ref types
+}