Рассмотрим этот пример:
template <typename T> inline constexpr bool C1 = true;
template <typename T> inline constexpr bool C2 = true;
template <typename T> requires C1<T> && C2<T>
constexpr int foo() { return 0; }
template <typename T> requires C1<T>
constexpr int foo() { return 1; }
constexpr int bar() {
return foo<int>();
}
Является ли вызов foo<int>()
неоднозначным, или ограничение C1<T> && C2<T>
означает C1<T>
?