返回类型后置
auto f(...) -> T;
等价于:
T f(...);
一般来说,可以不后置就不要后置。只有个别情况下只能用后置才用。
https://en.cppreference.com/w/cpp/language/function
【 在 wangkk2012 (wangkk2012) 的大作中提到: 】
: 标 题: C++ 线程池的疑问
: 发信站: 水木社区 (Tue Dec 15 18:33:25 2020), 站内
:
: class ThreadPool
: {
: public:
:
: // 构造函数,传入线程数
: ThreadPool(size_t threads);
:
: // 入队任务(传入函数和函数的参数)
: template<class F, class... Args>
: auto enqueue(F&& f, Args&&... args)
: ->std::future<typename std::result_of<F(Args...)>::type>;
: // 一个最简单的函数包装模板可以这样写(C++11)适用于任何函数(变参、成员都可以)
: // template<class F, class... Args>
: // auto enqueue(F&& f, Args&&... args) -> decltype(declval<F>()(declval<Args>()...))
: // { return f(args...); }
: // C++14更简单
: // template<class F, class... Args>
: // auto enqueue(F&& f, Args&&... args)
: // { return f(args...); }
:
:
: ~ThreadPool();
: private:
: // need to keep track of threads so we can join them
: std::vector< std::thread > workers;
: // the task queue
: std::queue< std::function<void()> > tasks;
:
: // synchronization
: std::mutex queue_mutex;
: std::condition_variable condition;
: bool stop;
: };
: 我不是特别理解
: template<class F, class... Args>
: auto enqueue(F&& f, Args&&... args)
: ->std::future<typename std::result_of<F(Args...)>::type>;
: auto enqueue() 这是个什么啊,我的理解是,这是一个函数,返回值是 std::future<> 这种类型,但是auto这是个什么啊,C++语言中的哪个知识点啊
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 219.142.254.*]
--
FROM 76.126.252.*