在这种constexpr / static_assert情况下,clang / gcc或MSVC是否正确?

时间:2020-07-04 20:49:36

标签: c++ constexpr c++20

我有以下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。

0 个答案:

没有答案
相关问题