C++11引入了哪些讓人難忘的坑?
拋磚引玉一下:
vector&
vecbool = {true, false, true};
auto x = vecbool[0]; // &<- oops...
vector&
&> dp;
dp.resize(n);
for (auto subvec: dp) { // &<- oops... subvec.resize(m); }
vector&
要說坑,
initialist&隨便寫幾個:
- 完美轉發
struct Foo {
Foo(Foo const) { cout &<&< "copy
"; }
template &
- std::bind
void foo() {}
void bar(std::function&
{
func();
}
std::bind(bar, std::bind(foo))(); // error!
- 初始化列表
print_size(std::vector&
print_size(std::vector&
print_size(std::vector&
這坑雖然不算大,但一不小心就踩了,因為一個""實在太方便了..
搞得我現在捕獲列表只敢一個一個變數地寫:std::function&
{
int k=0;
return [](){ return ++k; };
}
int main()
{
std::function&
return fun(); //勇乾的燒年啊快去破壞堆棧.......
}
opps應為oops
What a language fucked by shitty programmers
我奏是覺得function好用,會影響很多開源庫的實現方式。
但是,會不會帶來額外的坑還不清楚。
模稜兩可的代碼,能不寫就不寫,或者搞清楚了再寫。STL 的 regex_match 比 boost的 慢好多
測試大概慢10倍推薦閱讀:
※由於未能創建 Microsoft Visual C# 2015 編譯器......問題?
※C++程序怎麼在鏈接期間確保一塊內存空間?
※怎麼看待做手游cocos前端開發,lua用的多,c++用的少面試會被鄙視?
※若要向C++之父 Bjarne Stroustrup 請教10個技術Topics,有什麼好的建議么?
※將一個double類型的指針自增一次,前後的地址差是否一定為sizeof(double)?