C++ 在gcc中,通过std::is_convertible进行类内非静态成员初始化失败

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,

我用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, 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()的版本,但不适用于较旧版本()解析错误。基本上,它尝试解析
,另外,一个简化的示例如下。