ローカルな型とか無名型をテンプレート引数として使う

ローカルな型とか無名型をテンプレート引数として使える。
・・・オブジェクト生成時ってどうするんだろ? とりあえず動くもの。

  • ローカルな型
#include <vector>
#include <iostream>
using namespace std;
 
int main(){
  struct data{
    int a,b,c;
  } object = {1,2,3};
  vector<data> v;
  v.push_back(object);
  cout << v[0].a;
}

出力結果

1
  • 無名型
#include <vector>
#include <iostream>
using namespace std;
 
int main(){
  // 無名な型のインスタンスを生成
  struct{
    int a,b,c;
  } object = {1,2,3};
  // decltypeで型を取得してvector生成して突っ込む
  vector<decltype(object)> v;
  v.push_back(object);
  cout << v[0].a;
}

出力結果

1