くれなゐの雑記

例を上げて 自分で手を動かして学習できる入門記事を多めに書いています

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++ ~