Commit ddc757fe by Paolo Carlini Committed by Paolo Carlini

re PR c++/31671 (Non-type template of type const ref accepted as a non-const ref)

/cp
2013-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/31671
	* pt.c (convert_nontype_argument): Set expr_type to
	TREE_TYPE (probe_type).

/testsuite
2013-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/31671
	* g++.dg/template/nontype26.C: New.

From-SVN: r203444
parent 3c87b77b
2013-10-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/31671
* pt.c (convert_nontype_argument): Set expr_type to
TREE_TYPE (probe_type).
2013-10-11 Jakub Jelinek <jakub@redhat.com> 2013-10-11 Jakub Jelinek <jakub@redhat.com>
* decl.c (duplicate_decls): Error out for redeclaration of UDRs. * decl.c (duplicate_decls): Error out for redeclaration of UDRs.
......
...@@ -5611,7 +5611,7 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain) ...@@ -5611,7 +5611,7 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
TREE_TYPE (TREE_TYPE (addr))))) TREE_TYPE (TREE_TYPE (addr)))))
{ {
expr = TREE_OPERAND (addr, 0); expr = TREE_OPERAND (addr, 0);
expr_type = TREE_TYPE (expr); expr_type = TREE_TYPE (probe_type);
} }
} }
} }
......
2013-10-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/31671
* g++.dg/template/nontype26.C: New.
2013-10-11 Thomas Schwinge <thomas@codesourcery.com> 2013-10-11 Thomas Schwinge <thomas@codesourcery.com>
* c-c++-common/cpp/openmp-define-1.c: New file. * c-c++-common/cpp/openmp-define-1.c: New file.
......
// PR c++/31671
template<int& i> void doit() {
i = 0;
}
template<const int& i> class X {
public:
void foo() {
doit<i>(); // { dg-error "cv-qualification|no matching" }
}
};
int i = 0;
X<i> x;
int main() {
x.foo();
}
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