Commit a7b12f1f by Jason Merrill Committed by Jason Merrill

re PR c++/70505 (Constexpr failure when template type specified)

	PR c++/70505

	* pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
	unknown_type_node, too.

From-SVN: r235042
parent 26ad7ec7
2016-04-15 Jason Merrill <jason@redhat.com> 2016-04-15 Jason Merrill <jason@redhat.com>
PR c++/70505
* pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
unknown_type_node, too.
2016-04-15 Jason Merrill <jason@redhat.com>
Nathan Sidwell <nathan@acm.org> Nathan Sidwell <nathan@acm.org>
PR c++/70594 PR c++/70594
......
...@@ -13666,9 +13666,10 @@ tsubst_baselink (tree baselink, tree object_type, ...@@ -13666,9 +13666,10 @@ tsubst_baselink (tree baselink, tree object_type,
/* Add back the template arguments, if present. */ /* Add back the template arguments, if present. */
if (BASELINK_P (baselink) && template_id_p) if (BASELINK_P (baselink) && template_id_p)
BASELINK_FUNCTIONS (baselink) BASELINK_FUNCTIONS (baselink)
= build_nt (TEMPLATE_ID_EXPR, = build2 (TEMPLATE_ID_EXPR,
BASELINK_FUNCTIONS (baselink), unknown_type_node,
template_args); BASELINK_FUNCTIONS (baselink),
template_args);
/* Update the conversion operator type. */ /* Update the conversion operator type. */
BASELINK_OPTYPE (baselink) = optype; BASELINK_OPTYPE (baselink) = optype;
......
// PR c++/70505
// { dg-do compile { target c++11 } }
template <class X>
struct s
{
template <class T>
static constexpr T f1(const T x) {return x;}
template <class T, T = f1<T>(sizeof(T))>
static constexpr T f2(const T x) {return x;}
static void f() {s<int>::f2(42);}
};
int main()
{
s<int>::f();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment