模板元编程结果在GCC-4.9.3和GCC-5.1之间变化

时间:2016-07-22 20:57:15

标签: c++ c++11 gcc

我这里有一个简单的测试程序,在gcc-4.9.3gcc-5.1上编译时会输出不同的结果

#include <iostream>

template< class... >
using void_t = void;

template<class, class = void_t<>>
struct has_member_type : std::false_type
{ };

template<class T>
struct has_member_type<T, void_t<typename T::type>> : std::true_type
{ };

int main()
{
    std::cout << has_member_type<int>::value << '\n';

    return 0;
}

gcc-4.9.3输出

1

gcc-5.1输出

0

我一直无法找到允许我使用两种不同编译器版本编译的在线编译器。

但是,我发现两个独立的在线编译器具有不同的编译器版本:

问题:

  • 当明显没有成员gcc-4.9.3时,为什么1输出int::type

0 个答案:

没有答案