此代码在MSVC上编译失败,因为static_assert
失败:
template<class MyType>
struct Test {
static_assert(MyType(5) != MyType(6), "fails");
};
请参阅:https://godbolt.org/z/vUSMHu
有什么想法,MSVC如何在不知道MyType是什么的情况下进行评估?
更晦涩的是:
template<class MyType>
struct Test {
static_assert(MyType(5) == MyType(6), "succeeds");
static_assert(!(MyType(5) == MyType(6)), "fails");
};
请参阅:https://godbolt.org/z/3631tu
实例化它(即给MyType一个类型)也无济于事:
template<class MyType>
struct Test {
static_assert(MyType(5) != MyType(6), "still fails");
};
Test<int> variable;