MSVC оценивает контекст (и ошибается), не зная типов - PullRequest
0 голосов
/ 14 сентября 2018

Этот код не проходит компиляцию в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...