Visual Studio 2012ではstd::initializer_listが使えない。そんな時はstd::arrayを使うとスッキリする
まずは、祝リリース Visual Studio 2013 Community!!。
- Visual Studio Community 2013 - Visual Studio
- Microsoft、"Professional"相当の無償版「Visual Studio Community 2013」を公開 - 窓の杜
- .NET Core Framework、.NET Core Distribution for Linux/OSXのオープンソースと、無償Visual Studio Communityエディションを発表:CodeZine
これを皮切りに、Windowsのデベロッパーが増えてほしいですね!
そして、Visual Studio 2015 Preview!
※ 11/13 現在、Preview 版のダウンロードは英語版のみの提供となります。(日本語版は近日公開)
リリースサイクルが固定化されて、すごくいい感じな近年のVisual Studio(以下、VS)です。
ツールの進化にしっかり着いて行きたい今日このごろですが、ぼくらはVS2012です。
そして、VS2012では、std::initializer_list
がサポートされていません!
以下は、
- 固定長配列にも
std::vector
を使いたい - でも、可変はこまる。不変じゃなきゃ
- でも、VS2012なんだ
という人(マイノリティか。)にオススメです。
std::initializer_list とは
STL(C++標準ライブラリ)のクラスです。
initializer_list (C++11) - cpprefjp - C++ Library Reference
<initializer_list>ヘッダ
で提供されるinitializer_listクラス
は、ユーザー定義型が初期化子リスト構文による初期化を可能にするための特別なクラスである。コンテナクラスの初期化、代入に使用される。
vector等のコンテナの使いやすさはそのままに、それを不変(Immutable)にできるので重宝します。
生配列は使いたくない。constしたい。それができる「std::array」
以下のスニペットは、
- これまで(上)
- 理想(中)
- 現状のベスト(下)
をあらわしています。
std::array
は生配列をラップしてstd::vector
のように使える便利なものです。
固定長の配列を使いたいけど、生配列はイヤだ。でもVSは2012なんだ。そんな要件を満たしてくれたstd::array
。だいすき。君のことはわすれないよ。(VS2013に乗りかえるまでは)
参考リンク