为什么`is_constructible<function<int(int)>, int(*)(int,int)>::value`在VC2015RC下为真
Why `is_constructible<function<int(int)>, int(*)(int,int)>::value` is true under VC2015RC
#include <functional>
using namespace std;
int main()
{
static_assert(is_constructible<function<int(int)>, int(*)(int,int)>::value, "error");
}
代码未使用 GCC 和 Clang 编译,但使用 Visual C++ 2015 RC 通过。
这是符合标准的行为还是只是一个错误?
std::function
的构造函数曾经接受阳光下的一切(它是 template<class F> function(F f)
)。
然后它在标准中受到限制(LWG issue 2132), but implementing that constraint requires expression SFINAE, which Microsoft's compiler doesn't yet support。
#include <functional>
using namespace std;
int main()
{
static_assert(is_constructible<function<int(int)>, int(*)(int,int)>::value, "error");
}
代码未使用 GCC 和 Clang 编译,但使用 Visual C++ 2015 RC 通过。
这是符合标准的行为还是只是一个错误?
std::function
的构造函数曾经接受阳光下的一切(它是 template<class F> function(F f)
)。
然后它在标准中受到限制(LWG issue 2132), but implementing that constraint requires expression SFINAE, which Microsoft's compiler doesn't yet support。