1
std :: is_constructible为私有构造函数返回不一致的值
std::is_constructible处理私有构造函数的规则是什么?给出以下代码: #include <iostream> class Class { private: Class() { } }; template <typename T> class Test { public: static void test() { std::cout //<< std::is_constructible<Class>::value << std::is_constructible<T>::value << std::endl; } }; int main() { Test<Class>::test(); } 此打印0(ideone),即T默认情况下不可构造。 取消注释行的注释,它打印11(ideone),因此T突然变为默认可构造的。 我可以找到支持这两个结果的理由,但是我不明白包括注释行如何改变第二个结果。这是以某种方式调用UB的吗?这是编译器错误吗?还是std::is_constructible真的不一致?
13
c++
typetraits