C++ 检测自由'==';运算符使用std::experimental::是否检测到\u v:std类的不同行为
我试图在编译时检测某些类是否定义了“equals to”操作符。我不理解以下代码段的行为:C++ 检测自由'==';运算符使用std::experimental::是否检测到\u v:std类的不同行为,c++,templates,c++17,stdvector,sfinae,C++,Templates,C++17,Stdvector,Sfinae,我试图在编译时检测某些类是否定义了“equals to”操作符。我不理解以下代码段的行为: #包括 #包括 #包括 模板 使用supportsequaltoop_t=decltype(std::declval().operator==(std::declval()); 模板 使用supportSequalStore_t=decltype(std::declval()==std::declval()); 模板 结构A{}; int main(){ std::向量v0{1,2,3}; std::向量
#包括
#包括
#包括
模板
使用supportsequaltoop_t=decltype(std::declval().operator==(std::declval());
模板
使用supportSequalStore_t=decltype(std::declval()==std::declval());
模板
结构A{};
int main(){
std::向量v0{1,2,3};
std::向量v1{1,2,3};
//STD::CUT你已经搞乱了你的操作符优先级。<代码> STD::由于非成员比较函数的存在而导致的CUT:“代码> STD::COUT好,谢谢,我的错字误导了我……我今天才学习C++,所以STD::vector有非成员比较函数!
0
1
0
0
0
0
0
0
template<typename T>
using SupportsEqualsToOp_t = decltype(std::declval<T>().operator==(std::declval<T>()));
template<typename T>
using SupportsEqualsToFree_t = decltype(operator==(std::declval<T>(), std::declval<T>()));
template<typename T>
using SupportsEqualsTo_t = decltype(std::declval<T>() == std::declval<T>());