re PR c++/65133 ([C++11] Result type deduction proceeds even though argument deduction fails)
2015-05-12 Paolo Carlini <paolo.carlini@oracle.com> PR c++/65133 * g++.dg/cpp0x/trailing10.C: New. From-SVN: r223047
This commit is contained in:
parent
731261c334
commit
cb2e147086
2 changed files with 38 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2015-05-12 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/65133
|
||||
* g++.dg/cpp0x/trailing10.C: New.
|
||||
|
||||
2015-05-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gcc.dg/vect/bb-slp-35.c: New testcase.
|
||||
|
|
33
gcc/testsuite/g++.dg/cpp0x/trailing10.C
Normal file
33
gcc/testsuite/g++.dg/cpp0x/trailing10.C
Normal file
|
@ -0,0 +1,33 @@
|
|||
// PR c++/65133
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<bool, typename Tp = void>
|
||||
struct enable_if { };
|
||||
|
||||
template<typename Tp>
|
||||
struct enable_if<true, Tp> { typedef Tp type; };
|
||||
|
||||
template <int I>
|
||||
struct count
|
||||
{
|
||||
using type = typename count<I-1>::type;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct count<0>
|
||||
{
|
||||
using type = void;
|
||||
};
|
||||
|
||||
template <int I>
|
||||
auto foo(typename enable_if<(I>=0)>::type *
|
||||
= nullptr) -> typename count<I>::type { }
|
||||
|
||||
template <int I>
|
||||
void foo(typename enable_if<(I<0)>::type * = nullptr) { }
|
||||
|
||||
int main()
|
||||
{
|
||||
foo<2>();
|
||||
foo<-1>();
|
||||
}
|
Loading…
Add table
Reference in a new issue