![](/img/trans.png)
[英]How can I use void printMatrix( ostream& os = cout ) const?
[英]Why can I use ostream cout in a lambda although it wasn't captured?
這個lambda失敗了因為我沒有捕獲變量:
int main()
{
int val = 5;
auto lambda = []{ return val; }; // error: val wasn't captured.
lambda();
}
但是為什么ostream cout工作雖然它沒有被捕獲?
int main()
{
auto lambda = []{ cout << endl; }; // works
}
這是因為std::cout
是按以下方式定義的(在<iostream>
頭文件中):
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
而你的val
變量是在本地定義的(即在函數/類的范圍內)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.