Help us understand the problem. What is going on with this article?

TMPでcase

More than 5 years have passed since last update.

Qiitaの投稿練習も兼ねて
タイトルの通りで、C++のTMPでcaseを実現してみようとかいうそういうのです
文章で書くよりコードを見たほうがわかりやすいと思うので例を乗せます

example1.cpp
case_ < char >::of
<
    match < char , long > ,
    match < short , int > ,
    match < int , short > ,
    match < long , char > ,
    match < list < pattern < 0 > , double > , list < double , pattern < 0 > > >
>::type // => long
example2.cpp
case_ < list < float , double > >::of
<
    match < char , long > ,
    match < short , int > ,
    match < int , short > ,
    match < long , char > ,
    match < list < pattern < 0 > , double > , list < double , pattern < 0 > > >
>::type // => list < double , float >

includeやusingなどは省略しています
TMPのために僕自身が作成したライブラリ、FTMPを使用しています
まあ、TMPってこんなこともできるんだよーって話です
これをうまく使えばTMPの際のメタ関数の場合分けがなんとかなるかもしれません

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away