gcc11: ambiguous overload for ‘operator&&’

GCC 11.1.0, сборка программы заканчивается ошибкой:

#include <variant>
#include <map>

bool operator && (const std::variant<bool, double> &, const std::variant<bool, double> &);

int main()
{
    std::map<int, bool> vals;
    vals.find(1);

    return 0;   // ok
}

Ошибка:

/usr/include/c++/11/type_traits:2942:7: error: ambiguous overload for ‘operator&&’ (operand types are ‘std::true_type’ {aka ‘std::integral_constant<bool, true>’} and ‘std::true_type’ {aka ‘std::integral_constant<bool, true>’})

При этом ошибки нет в GCC 8.4.0, GCC 10.3.0, Clang-11, Clang-12.

В чем тут проблема и как ее исправить?


Ответы (1 шт):

Автор решения: Николай

В текущем trunk GCC ошибка сборки пропала.

→ Ссылка