Why `is_constructible, int(*)(int,int)>:

2019-02-28 15:17发布

#include <functional>
using namespace std;

int main()
{
   static_assert(is_constructible<function<int(int)>, int(*)(int,int)>::value, "error");
}

The code doesn't compile with GCC and Clang, but passed with Visual C++ 2015 RC.

Is this standard compliant behavior or just a bug?

1条回答
叼着烟拽天下
2楼-- · 2019-02-28 15:46

std::function's constructor used to accept everything under the sun (it was a template<class F> function(F f)).

Then it got constrained in the standard (by LWG issue 2132), but implementing that constraint requires expression SFINAE, which Microsoft's compiler doesn't yet support.

查看更多
登录 后发表回答