我正在探索一些概念,期望`std::is_equality_comparable`适用于向量,但实际上并不适用。
编译错误发生在
#include <type_traits>
#include <vector>
#include <concepts>
struct X {};
template<std::equality_comparable T>
bool foo( T v){
return v == v;
}
int main()
{
foo(10);
foo(std::vector<X>{});
}
编译错误发生在
foo
内部,而不是由概念保护的函数边界处。
这是一个 bug 还是预期行为?
X
不具备相等比较性。 - bolovvector<X>
满足equality_comparable
概念,尽管你不能比较它们。 - bolov