読者です 読者をやめる 読者になる 読者になる

ちゃっくのメモ帳

ちゃっくがメモしときたいことをメモしとくよ

boost/any.cppなんだよっ

C++のboost/any.cppを使ってみた.
ドキュメントとかはなんかこの辺みた.
Chapter 3. Boost.Any - 1.61.0
boostjp.github.io

基本的には任意の型を代入できるような型(多分).
STLも代入できるし,自作クラスとかも代入できる.

つまりvector<boost::any>とかするといろんな型を収めた可変長配列が使用できそう...

値を取り出すときは, boost::any_cast<T>を用いて型をキャストする.
型を判定するには .type()がtype_info型を返すので x.type()==typeid(int)のように判定すれば良い...(はず)

以下試してみたコード

出力は

type int : 1
type char : A
type double : 3.3
type vector<int> : [10,20,30,]
type string : hoge
type fuga : 4

となる.

 

**追記

どうやらanyはC++1y,14ならstd::experimental::any,C++17ならstd::anyがあるらしい.

わざわざboostを使う必要は無いっぽい?

std::experimental::any - cppreference.com