boostorg/fusion — pull request #24 by Flast (2014-10-22 11:04:08+00:00)
Title: Fix tickets #10443 completely (SFINAE-friendly invoke).

I think @djowel 's fix (6cad6be) is incomplete. I propose a patch to fix completely.

This PR should fix [Test output: BP x86_64 C++11 - fusion - invoke / gcc-4.8.3~c11](http://www.boost.org/development/tests/develop/developer/output/BP%20x86_64%20C++11-boost-bin-v2-libs-fusion-test-invoke-test-gcc-4-8-3~c11-debug-debug-symbols-off.html) and similar failure.

Notes:
```
// A
template
struct invoke_impl;

// B
template
struct invoke_impl::type>
{
typedef typename result_of::type type;
};

invoke_impl::type
// This doesn't match expected specialization (B), because result_of::type is `int`
// but `Enable` is `void` (defaulted by template declaration), and compile error.
```
c.f. http://melpon.org/wandbox/permlink/ffr4clbbSgDaWlr2