how can I remove very long (falsely accused) std::_Conjunction template errors from my Error List?

Viewed 108

I have constexpr lookup tables that have 1024 elements and look like this:

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

std::array calls this compile time check:

#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;
};

in order to guarantee that all elements inside the {0x651fbb09u, /* ... */} are of the same type.


Visual Studio tends to always display the full std::_Conjunction template chain as an active error whenever I encounter any build error (even though the error is somewhere else; all types inside the std::array<>{ ... } are equal).

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>, /* ... */

the full std::_Conjunction error List

this makes it very difficult to see my real build errors as the output above is listed first and multiple times.

It triggers the active errors E0262, E1018 and E0135


is there a way to exclude these listings from my Error List?

Visual Studio Community 2019 Version 16.6.2

0 Answers
Related