re PR c++/50958 ([C++0x] raw literal operator provides incorrect string for integer literal '0')

	PR c++/50958
gcc/cp/
	* parser.c (lookup_literal_operator): New.
	(cp_parser_userdef_char_literal): Use it.
	(cp_parser_userdef_numeric_literal): Use it.
	(cp_parser_userdef_string_literal): Use lookup_name.
libcpp/
	* expr.c (cpp_userdef_char_remove_type): Fix typo.

From-SVN: r181595
diff --git a/libcpp/expr.c b/libcpp/expr.c
index 7bbc72d..d56e56a 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -284,9 +284,9 @@
   else if (type == CPP_WCHAR_USERDEF)
     return CPP_WCHAR;
   else if (type == CPP_CHAR16_USERDEF)
-    return CPP_STRING16;
+    return CPP_CHAR16;
   else if (type == CPP_CHAR32_USERDEF)
-    return CPP_STRING32;
+    return CPP_CHAR32;
   else
     return type;
 }