std::aligned_union
有一個std::size_t
「最小長度」參數。現在,一個通常的工會沒有這個,所以我想知道爲什麼這是必要的。有人可以向我解釋爲什麼?爲什麼std :: aligned_union需要最小尺寸作爲模板參數?
回答
相關紙張似乎是N2140。原因基本上是你可以過度對齊類型。給出的例子是你可以製作頁面對齊的數據結構。
(我第一次使用aligned_storage和aligned_union混合起來,很抱歉)。
Aligned_storage在N2140中被描述爲aligned_union的可能基類。 N2140還描述(但不強制)aligned_storage<N, ...>
點的實現作爲對齊的char[N]
的warpper。顯然你需要N。
因爲它是一個非平凡瑣碎型)
std::aligned_union
是POD類型與至少每指定的類型的給定的大小,和取向。這些類型不一定是POD類型,從中可以看出它們不能成爲成員。
你能做什麼,但是,是利用放置新把一個
T[n]
在該存儲提供的aligned_union爲
T
對齊,其大小至少爲
sizeof(T[n])
我打賭這是爲泛型編程的情況下,其中可變類型列表可能是空的。
在這種情況下,有一定的最小尺寸將被使用,這樣你仍然控制對準(就沒有類型採取從對準值)
實際上,規範說如果可變類型列表被傳遞,那麼它是未定義的行爲,如果它是一個空列表([見本](http://en.cppreference.com/w/cpp/types/aligned_union)) – DarthRubik 2016-07-06 00:14:32
- 1. 爲什麼大小不是std :: initializer_list的模板參數?
- 2. 爲什麼模板聲明中的size_t參數需要爲const?
- 3. 爲什麼std :: stack不使用模板模板參數?
- 4. 爲什麼需要std :: minmax_element?
- 5. std ::元組作爲模板參數?
- 6. 爲什麼視頻的尺寸小於iOS照片的尺寸
- 7. 爲什麼我的面板在製作尺寸小於顯式尺寸時一直夾在面板周圍?
- 8. 爲const char數組模板參數尺寸與字符指針
- 9. 爲什麼void *作爲模板參數而不是模板參數?
- 10. 我需要爲Xamarin Tabbar中的圖標指定什麼尺寸?
- 11. 模板函數作爲模板參數,標準是什麼?
- 12. 非模板參數爲什麼不能通過std :: vector
- 13. 爲什麼std :: future模板參數類型是引用類型?
- 14. 爲什麼方法參數需要設置爲最終?
- 15. 爲什麼模板模板參數不能按預期工作?
- 16. C++函數模板特爲已知尺寸typedef操作陣列
- 17. 爲什麼某些OCaml函數需要()作爲參數?
- 18. 爲什麼std :: search需要轉發iters
- 19. Android儀表板以英寸爲單位認爲小尺寸,普通,大尺寸和xlarge屏幕尺寸?
- 20. 爲什麼是std ::加上類模板?
- 21. PSD網站模板的最佳尺寸?
- 22. C++的std ::加爲模板參數
- 23. 爲什麼UdpClient.Receive需要ref參數?
- 24. 爲什麼Python需要「self」參數?
- 25. 將void *作爲std :: unordered_map的第二個模板參數意味着什麼?
- 26. gtk最小尺寸
- 27. 爲什麼C++ variadic模板不接受iostream值作爲參數?
- 28. 作爲模板參數的C++模板
- 29. std :: any_cast()和std :: get_if(std :: variant)是否需要將指針作爲參數?
- 30. 作爲模板參數的模板類
可能性的過度分配可能是一個原因。 – Xeo 2014-11-21 20:09:44