Этот код не проходит компиляцию в 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;
См .: https://godbolt.org/z/yxF4h0
Или немного сложнее: https://godbolt.org/z/68g6yO