как я могу удалить очень длинные (ложно обвиняемые) ошибки шаблона std :: _ Conjunction из моего списка ошибок? - PullRequest
3 голосов
/ 21 июня 2020

У меня есть constexpr таблицы поиска, которые содержат 1024 элемента и выглядят следующим образом:

constexpr auto ln2_mantissa = std::array<std::uint32_t, 1024>{0x651fbb09u, 0xe35dff88u, /* ... */ 0x2168c234u, 0xc90fdaa2u};

std::array вызывает эту проверку времени компиляции:

#if _HAS_CXX17
template <class _First, class... _Rest>
struct _Enforce_same {
    static_assert(conjunction_v<is_same<_First, _Rest>...>,
        "N4687 26.3.7.2 [array.cons]/2: "
        "Requires: (is_same_v<T, U> && ...) is true. Otherwise the program is ill-formed.");
    using type = _First;
};

, чтобы гарантировать, что все элементы внутри {0x651fbb09u, /* ... */} относятся к одному типу.

Visual Studio имеет тенденцию всегда отображать полную цепочку шаблонов std::_Conjunction как активную ошибку всякий раз, когда я сталкиваюсь с ошибкой сборки любой (даже если ошибка где-то еще; все типы внутри std::array<>{ ... } равны).

Error (active)  E1018   class "std::_Conjunction<true, std::is_same<unsigned int, unsigned int>, std::is_same<unsigned int, unsigned int>, std::is_same<unsigned int, unsigned int>, /* ... */

полный список ошибок соединения std :: _

из-за этого очень трудно увидеть мои настоящие ошибки сборки, так как результат выше указан первым и несколько раз.

Это вызывает активные ошибки E0262, E1018 и E0135

есть ли способ исключить эти списки из моего списка ошибок?

Visual Studio Community 2019 версии 16.6.2

...