MSVC在不知道类型的情况下评估上下文(和错误)

时间:2018-09-14 07:13:16

标签: c++ visual-studio visual-c++ visual-studio-2017 static-assert

此代码在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

0 个答案:

没有答案