小编Sky*_*rus的帖子

使用auto进行仿函数的类型推导

我对C++ 11的功能比较陌生.我对自动功能以及它如何类型推断出仿函数有疑问.请考虑以下代码段:

bool test1(double a, double b) {
   return (a<b);
}

   bool test2(double a, double b) {
       return (a>b);
   }

   struct Test1 {
       bool operator()(double a, double b) {
          return (a<b);
       }
   };

   struct Test2 {
       bool operator()(double a, double b){
          return (a>b);
       }
   };

   int main() {
       const bool ascending = false; 
      auto comparator =  ascending? test1:test2; // works fine
      auto comparator2 = ascending? Test1():Test2(); // compiler error: imcompatible types
      std::function<bool(double, double)> comparator3 = ascending? Test1():Test2(); // compiler error: …
Run Code Online (Sandbox Code Playgroud)

c++ auto c++11

3
推荐指数
1
解决办法
359
查看次数

标签 统计

auto ×1

c++ ×1

c++11 ×1