
On Tue, Nov 27, 2012 at 1:28 PM, Peter Dimov <lists@pdimov.com> wrote:
Mathias Gaunard wrote:
On 27/11/12 21:56, Jeffrey Lee Hellrung, Jr. wrote:
On Tue, Nov 27, 2012 at 12:47 PM, Oliver Kowalke <oliver.kowalke@gmail.com>**wrote:
Hello, clang (c++11 support) fails on code like:
BOOST_STATIC_ASSERT(( is_same< void, typename result_of< Fn() >::type >> ::value));
with error:
no type named 'type' in 'boost::result_of<void (&())(X &)>' is_same< void, typename result_of< Fn() >::type >> ::value)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~****~~
Does Fn == void (&)(X&) or void (X&) ? I.e., is it a unary function > type?
There might've been a recent change only for Clang to allow result_of to > be better usable with SFINAE: result_of< F ( Args... ) > doesn't have a > nested type typedef if F ( Args... ) is ill-formed (which appears to be the > case here).
And the person who did that change didn't think of running the test?
The test looks broken. A function that takes X& can't be called with zero arguments.
Yes, the assertion looks wrong, though something that would pass with the non-decltype implementation of result_of...which might explain its failure on clang if clang was switched to used decltype? Everything I've said in this thread is speculation, by the way. - Jeff