diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae24.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae24.C | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae24.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae24.C new file mode 100644 index 0000000..6d275d3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae24.C @@ -0,0 +1,29 @@ +// PR c++/49058 +// This error is not subject to SFINAE because it doesn't happen in the +// deduction context. +// { dg-do compile { target c++11 } } +// { dg-prune-output "note" } + +template<typename T> T val(); + +struct F1 +{ + void operator()(); +}; + +template<typename F> +struct Bind +{ + template<typename R + = decltype( val<F>()( ) )> + R f(); + + template<typename R + = decltype( val<const F>()( ) )> // { dg-error "no match" } + R f() const; +}; + +int main() +{ + Bind<F1> b; +} |