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
This commit is contained in:
parent
26ad7ec736
commit
a7b12f1f3e
|
@ -1,3 +1,9 @@
|
|||
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>
|
||||
|
||||
|
|
|
@ -13666,9 +13666,10 @@ tsubst_baselink (tree baselink, tree object_type,
|
|||
/* Add back the template arguments, if present. */
|
||||
if (BASELINK_P (baselink) && template_id_p)
|
||||
BASELINK_FUNCTIONS (baselink)
|
||||
= build_nt (TEMPLATE_ID_EXPR,
|
||||
BASELINK_FUNCTIONS (baselink),
|
||||
template_args);
|
||||
= build2 (TEMPLATE_ID_EXPR,
|
||||
unknown_type_node,
|
||||
BASELINK_FUNCTIONS (baselink),
|
||||
template_args);
|
||||
/* Update the conversion operator type. */
|
||||
BASELINK_OPTYPE (baselink) = optype;
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// 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();
|
||||
}
|
Loading…
Reference in New Issue