Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么'is_constructible::value'在VC2015RC下为true 没有用GCC和Clang编译,而是用Visual C++ 2015 RC .传递。_C++_C++11_Visual C++_Typetraits_Std Function - Fatal编程技术网

为什么'is_constructible::value'在VC2015RC下为true 没有用GCC和Clang编译,而是用Visual C++ 2015 RC .传递。

为什么'is_constructible::value'在VC2015RC下为true 没有用GCC和Clang编译,而是用Visual C++ 2015 RC .传递。,c++,c++11,visual-c++,typetraits,std-function,C++,C++11,Visual C++,Typetraits,Std Function,这是符合标准的行为还是仅仅是一个bug?std::function的构造函数用于接受阳光下的一切,它是一个模板functionF 然后,它在标准中受到约束,但实现该约束需要表达式SFINAE,它。std::function的构造函数用于接受太阳下的所有内容,它是一个模板函数f 然后它在标准中受到约束,但实现该约束需要表达式SFINAE,这是另一个表达式SFINAE问题。但我仍然有问题,从C++标准的角度来看,这种行为是否正确?或者它在C++11中有效,在C++14中无效?@Windoze根据C+

这是符合标准的行为还是仅仅是一个bug?

std::function的构造函数用于接受阳光下的一切,它是一个模板functionF

然后,它在标准中受到约束,但实现该约束需要表达式SFINAE,它。

std::function的构造函数用于接受太阳下的所有内容,它是一个模板函数f


然后它在标准中受到约束,但实现该约束需要表达式SFINAE,这是另一个表达式SFINAE问题。但我仍然有问题,从C++标准的角度来看,这种行为是否正确?或者它在C++11中有效,在C++14中无效?@Windoze根据C++11标准发布,传递给定签名不可调用的内容会破坏一个Requires子句,即UB,因此任何答案都是正确的。在C++14中,“可构造”应该为false。当使用类型实例化时,它是UB已经存在,还是只有在实际计算构造函数调用时才是UB?@johanneschaub litb我认为实例化就足够了。[res.on.functions]/2,bullet 2.3.@windoze我认为std::result_两种方法都有效,如果不表达sfinae,在2015年甚至2013年都是对sfinae友好的,所以sfinae甚至不是这里的借口。Geeee…另一个表达sfinae问题。但我仍然有问题,从C++标准的角度来看,这种行为是否正确?或者它在C++11中有效,在C++14中无效?@Windoze根据C++11标准发布,传递给定签名不可调用的内容会破坏一个Requires子句,即UB,因此任何答案都是正确的。在C++14中,“可构造”应该为false。当使用类型实例化时,它是UB已经存在,还是只有在实际计算构造函数调用时才是UB?@johanneschaub litb我认为实例化就足够了。[res.on.functions]/2,bullet 2.3.@windoze我认为std::result_两种方法都有效,如果不是在2015年甚至2013年表达sfinae,它对sfinae是友好的,所以在这里表达sfinae甚至不是借口。
#include <functional>
using namespace std;

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