我有以下code,MSVC和clang / gcc不同意,MSVC接受。 我认为MSFT是错误的(godbolt没有最新的编译器,但是我知道,即使在许可的情况下,Intellisense也抱怨编译器对其进行编译)。
#include <cstdint>
#include <tuple>
using namespace std;
void bla() {
constexpr int64_t val1 = 1;
constexpr int64_t val2 = val1 - 1;
constexpr tuple<int64_t> tup1(val1);
constexpr tuple<int64_t> tup2(val2);
const double d1 = std::get<0>(tup1);
const double d2 = std::get<0>(tup2);
static_assert(d1 != d2);
}
注意:这主要是理论问题,我可以轻松地将这些变量设为constexpr。