C++ 在gcc中,通过std::is_convertible进行类内非静态成员初始化失败
我用gcc版本4.9.2(Debian 4.9.2-10)编译了它,但它给了我一个看似无关的错误 这可能是一个编译器错误吗C++ 在gcc中,通过std::is_convertible进行类内非静态成员初始化失败,c++,c++11,gcc,C++,C++11,Gcc,我用gcc版本4.9.2(Debian 4.9.2-10)编译了它,但它给了我一个看似无关的错误 这可能是一个编译器错误吗 #include <type_traits> #include <vector> #include <iostream> #include <iterator> struct test_class { bool B1 = std::is_convertible<std::output_iterator_tag,
#include <type_traits>
#include <vector>
#include <iostream>
#include <iterator>
struct test_class {
bool B1 = std::is_convertible<std::output_iterator_tag, std::output_iterator_tag>::value; // error: invalid use of ‘::’
//static const bool B1 = std::is_convertible<std::output_iterator_tag, std::output_iterator_tag>::value; // works fine
//bool B1;
//test_class() : B1(std::is_convertible<std::output_iterator_tag, std::output_iterator_tag>::value) {} // works fine
};
int main() {
test_class a;
std::cout << a.B1;
}
#包括
#包括
#包括
#包括
结构测试类{
bool B1=std::is_convertable::value;//错误:对“:”的使用无效
//static const bool B1=std::is_convertable::value;//工作正常
//布尔B1;
//test_class():B1(std::is_convertible::value){}//工作正常
};
int main(){
甲级考试;
std::我是否认为g++的错误适用于等于或大于6.1()的版本,但不适用于较旧版本()的解析错误。基本上,它尝试解析。另外,一个简化的示例类似于。我认为g++的错误适用于等于或大于6.1()的版本,但不适用于较旧版本()解析错误。基本上,它尝试解析,另外,一个简化的示例如下。