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

くれなゐの雑記

身の回りの人や自分が困っていたことを記事にしています

c++でpython風のinput()を作った(戻り値型推論的なやつ)

Motivation

int i = input();
string s = input();

みたいなのをしたい気分になった

SourceCode

以下のやつをコピペすれば動きます

struct input_returnner { template<typename T>operator T() const { T t; cin >> t;   return t;} };
input_returnner input() { return input_returnner(); }

/// ---template---

int main(void) {
    string a = input();
    cout << a << endl;
    return 0;
}

簡単な解説

変換演算子を持つ独自クラスを返すクラスを作って, input_returnner{} とかでもかけるんだけどクッソ気持ち悪かったので関数で囲ってやった

あとがき

でも

vector<int> v(N); for(auto &a:v) cin >> a;

って普段やってるしあまり活躍しなさそう

参考文献

C++で戻り値の型推論 • C言語交流フォーラム ~ mixC++ ~