re PR c++/58046 (template operator= in SFINAE class)
2016-01-21 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58046 * g++.dg/cpp0x/pr58046.C: New. From-SVN: r232671
This commit is contained in:
parent
3e0c32dfda
commit
aede6748d0
2 changed files with 44 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2016-01-21 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/58046
|
||||
* g++.dg/cpp0x/pr58046.C: New.
|
||||
|
||||
2016-01-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/69187
|
||||
|
|
39
gcc/testsuite/g++.dg/cpp0x/pr58046.C
Normal file
39
gcc/testsuite/g++.dg/cpp0x/pr58046.C
Normal file
|
@ -0,0 +1,39 @@
|
|||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<bool, class T = void>
|
||||
struct enable_if {};
|
||||
|
||||
template<class T>
|
||||
struct enable_if<true, T>
|
||||
{
|
||||
using type = T;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct is_true
|
||||
{
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
extern void* enabler;
|
||||
|
||||
template <typename T, typename enable_if<is_true<T>::value>::type*& = enabler>
|
||||
class A
|
||||
{
|
||||
public:
|
||||
A()
|
||||
{}
|
||||
template <typename U>
|
||||
A& operator=( A<U>&& )
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
A<int> a_i;
|
||||
A<double> a_d;
|
||||
|
||||
a_i = a_d; // { dg-error "cannot bind" }
|
||||
}
|
Loading…
Add table
Reference in a new issue