代码之家  ›  专栏  ›  技术社区  ›  Dmitri Nesteruk

可变函数包装器不使用MSVC2017编译

  •  0
  • Dmitri Nesteruk  · 技术社区  · 8 年前

    template <typename R, typename ...Args>
    struct Logger3<R(Args...)>
    {
      std::function<R(Args...)> func;
      string name;
    
      Logger3(std::function<R(Args...)> func, const string& name)
        : func{func}, name{name}
      {
      }
    
      R operator() (Args ...args)
      {
        cout << "Entering " << name << endl;
        R result = func(args...);
        cout << "Exiting " << name << endl;
        return result;
      }
    };
    
    double add(double a, double b)
    {
      cout << a << " + " << b << " = " << (a+b) << endl;
      return a+b;
    }
    
    template <typename R, typename... Args>
    auto make_logger3(R (*func)(Args...), const string& name)
    {
      return Logger3<R(Args...)>(
        std::function<R(Args...)>(func),
        name
      );
    };
    

    error C2988: unrecognizable template declaration/definition

    1 回复  |  直到 8 年前
        1
  •  2
  •   Jarod42    8 年前

    你应该有 template <typename> struct Logger3;