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

时间:2017-03-17 11:32:57

标签: 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, 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;
}

编译通过:name @ machine:〜$ g ++ -std = c ++ 14 example.cpp

MSVC 2015编译得很好。

0 个答案:

没有答案