diff options
author | Paolo Carlini <paolo@gcc.gnu.org> | 2013-10-31 12:10:20 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-10-31 12:10:20 +0000 |
commit | 7f1001af7f90d44ea97b6ff6095f207cbab6ee13 (patch) | |
tree | 8784c42b96662d2808cf2abfc4f1c350c8adc7ee /gcc | |
parent | 57d4d653e8199c53202b6a2d2a8e2b6c4644448d (diff) | |
download | gcc-7f1001af7f90d44ea97b6ff6095f207cbab6ee13.zip gcc-7f1001af7f90d44ea97b6ff6095f207cbab6ee13.tar.gz gcc-7f1001af7f90d44ea97b6ff6095f207cbab6ee13.tar.bz2 |
re PR c++/58932 ([C++11] Deleted functions and SFINAE in partial template specializations)
/cp
2013-10-31 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58932
Revert:
2013-10-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58466
* pt.c (most_specialized_class): Bump processing_template_decl for
get_class_bindings.
/testsuite
2013-10-31 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58932
Revert:
2013-10-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58466
* g++.dg/cpp0x/variadic145.C: New.
* g++.dg/cpp0x/sfinae49.C: New.
From-SVN: r204252
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/sfinae49.C | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae49.C b/gcc/testsuite/g++.dg/cpp0x/sfinae49.C new file mode 100644 index 0000000..59381f3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/sfinae49.C @@ -0,0 +1,29 @@ +// PR c++/58932 +// { dg-do compile { target c++11 } } + +using nullptr_t = decltype(nullptr); + +template<typename T, typename Sfinae = nullptr_t> +struct B { + static float& int_if_addable(); +}; + +template<typename T> +struct B<T, decltype( (T() + T()), nullptr )> { + static int& int_if_addable(); +}; + +struct X { }; + +struct Y { }; +Y operator+(Y, Y); + +struct Z { }; +Z operator+(Z, Z) = delete; + +int main() +{ + float& a = B<X>::int_if_addable(); + int& b = B<Y>::int_if_addable(); + float& c = B<Z>::int_if_addable(); +} |