我这里有一个简单的测试程序,在gcc-4.9.3
和gcc-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
(rextester)gcc-5.1
(ideone)问题:
gcc-4.9.3
时,为什么1
输出int::type
?