1. 程式人生 > >c++11特性之std::thread--初識二

c++11特性之std::thread--初識二

上篇部落格《c++11特性之std::thread–初識》初步介紹了std::thread,並且介紹了幾個成員函式。

最後的一段程式碼留了點懸念,就是vs2015會報錯,錯誤如下:

 error C2893: 未能使函式模板“unknown-type std::invoke(_Callable &&,_Types &&...)”專用化
1>  d:\program files (x86)\microsoft visual studio 14.0\vc\include\thr\xthread(238): note: 用下列模板引數:
...
========== 生成: 成功 0
個,失敗 1 個,最新 0 個,跳過 0 個 ==========

程式碼改為:


#include <iostream>
#include <thread>

using namespace std;

class Foo
{
    void bar_i() { cout << "hello" << endl; }

public:
    void bar()
    {
        auto func = std::bind(&Foo::bar_i, this);
        std::thread t(&Foo::bar_i, this
); t.join(); } }; int main() { Foo f; f.bar(); }

至於原因呢?
在std::thread中,指向成員函式的指標知道第一個引數是引用。

哈哈 上面一句話太牽強了,好吧 我也不是真正的理解

請大神指點迷津、

相關推薦

c++11特性std::thread--初識

上篇部落格《c++11特性之std::thread–初識》初步介紹了std::thread,並且介紹了幾個成員函式。 最後的一段程式碼留了點懸念,就是vs2015會報錯,錯誤如下: error

c++11特性std::thread--初識

C++11中已經擁有了一個更好用的用於執行緒操作的類std::thread。 預設建構函式: thread() noexcept; 構造一個任何執行緒不執行的執行緒物件。 初始化函式: template <class Fn, class...

C++11併發std::thread

知識連結: C++11 併發之std::atomic 本文概要: 1、成員型別和成員函式。 2、std::thread 建構函式。 3、非同步。 4、多執行緒傳遞引數。 5、join、deta

c++ 11 特性auto

 auto並沒有讓C++成為弱型別語言,也沒有弱化變數什麼,只是使用auto的時候,編譯器根據上下文情況,確定auto變數的真正型別。 auto在C++14中可以作為函式的返回值 #include<iostream> auto add(int x,int y) { &nb

如何寫cmake使其包含c++11特性 (-std=c++11如何寫進cmakeList.txt)

g++ 4.8.2 cmake 2.8 之前寫cmkae編譯帶有c++11特性的程式碼有這麼一句: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 但是總會出現cc1plus: error: unrecognized

[cpp].c++11學習筆記-std thread

std::thread用於啟動執行緒,可以用作跨平臺的執行緒庫。 它啟動執行緒的方式很靈活,可以支援C函式,類成員函式,類靜態函式等。 #include <thread> //標頭檔

C++11特性右值引用

wap 移動語義 ostream 更改 let 強制轉換 生命期 不能 size title: 右值引用與移動語義 date: 2019-2-24 15:06:34 tags: 學習 categories: 日常 --- 什麽是右值?在C++中,一種被廣泛認可的說法是,不

C++11特性 std::forward(完美轉發)(轉)

tails array sin .com std utili res details calling 我們也要時刻清醒,有時候右值會轉為左值,左值會轉為右值。 (也許“轉換”二字用的不是很準確) 如果我們要避免這種轉換呢? 我們需要一種方法能按照參數原來的類型轉發到另一個函

C++11特性 std::array container

陣列每個人都很熟悉,vector更是我們常常用到的。 但是某些場合,使用vector是多餘的,尤其能明確元素個數的情況下,這樣我們就付出了效率稍低的代價! 但是你使用陣列的代價是那麼的不安全,那麼的不方便。 於是,C++11推出了模板類array,位於st

C++11特性 std::forward(完美轉發)

上篇部落格對右值、右值引用都做了簡要介紹。 我們也要時刻清醒,有時候右值會轉為左值,左值會轉為右值。 (也許“轉換”二字用的不是很準確) 如果我們要避免這種轉換呢? 我們需要一種方法能按照引數原來的型別轉發到另一個函式中,這才完美,我們稱之為完美轉發

C++多執行緒std::thread

C++11,包含標頭檔案 thread.h,並使用名稱空間std。 thread類提供的方法 方法 描述 thread 建構函式,在這裡傳入執行緒執行函式,和函式引數

升級 gcc g++ 版本 支援-std=c++11 特性

CentOS 6.6 升級GCC G++ (當前最新GCC/G++版本為v6.1.0) 或者 新增yum 的 repo 檔案 也不行, 只能更新到 4.4.7! 採取手動編譯安裝了 1、 獲取安裝包並解壓 wget http://ftp.gnu.org/gnu/g

c++11特性裡的多執行緒thread的用法

建立和啟動一條C++執行緒就像在C++原始碼中新增執行緒標頭檔案那麼簡便。我們來看看如何建立一個簡單的帶執行緒的HelloWorld: #include <iostream> #include <thread> using namespace std

C++11 併發指南四( 詳解 std::packaged_task 介紹)

上一講《C++11 併發指南四(<future> 詳解一 std::promise 介紹)》主要介紹了 <future> 標頭檔案中的 std::promise 類,本文主要介紹 std::packaged_task。 std::package

C++11特性--統一的初始化,std::initializer_list

        注:本系列筆記所有內容的參考資料來源於《C++ Primer Plus》             C++11特性需編譯器支援,如果是WindowS整合開發環境,一般需要在IDE的編譯器選項裡找或者工程的屬性裡可以配置"-std=c++11"             以devC++為例:proj

C++三大特性多態

類函數 如果 ide 賦值 純虛函數 cti turn 重新 git 原文地址:https://qunxinghu.github.io/2016/09/08/C++%20%E4%B8%89%E5%A4%A7%E7%89%B9%E6%80%A7%E4%B9%8B%E5%A4%

c++ 11 遊記 decltype constexpr

script hide line variable pan sig 結果 roc .net title: c++ 11 遊記 1 keyword :c++ 11 decltype constexpr 作者:titer1 zhangyu 出處:

C++ 三大特性多態

main 類類型 允許 重載 示例代碼 ive 進行 on() 並且 C++ 三大特性之多態 C++ 的三大特性,封裝,繼承,多態。封裝可以使得代碼模塊化,繼承可以擴展已存在的代碼,而多態的目的則是為了接口重用。本篇博客主要介紹C++中多態的相關概念及使用方法。 概念 多

C++ 三大特性封裝

title prot 派生 情況 table tle 依賴 rtu 純虛函數 C++ 三大特性之封裝 本篇博客主要介紹C++ 的封裝機制。在本篇博客中,簡單介紹了封裝的相關概念以及在C++ 中實現封裝的基本手段。 什麽是封裝? 封裝: 封裝可以隱藏實現細節,使得代碼模塊化

NFVI特性實時虛擬機()

openstack接前文,之前講了openstack中實時虛擬機特性都作了那些特有的實現,這些代碼大部分在M版本中已經合入。但是關於qemu本身消耗的CPU時間,並沒有很好的處理。這塊的設計和代碼實現一直到P版本,也就是最近才合入到主幹代碼中。我們知道,openstack中nova根據虛擬機的flavor給虛