関数の戻り値などで複数の状態を表したい場合、enumを使うのが正しい方法だと思います。
しかしながらついついint型を使用して-1だとか2だとかを直接書いてしまったりします。でもこれはなるべく避けたいところです。
そこでマルチキャラクタリテラルが使えるんじゃないかと思い至りました。つまり戻り値を'ok'とか'fail'などシングルクォーテーションで括った4文字程度の値を使うわけです。これなら意味は明瞭ですし何も考えずにすみます。
unsigned func() { if () return 'fail'; return 'ok'; } int main() { unsigned ret = func(); if (ret == 'ok') { } else if (ret == 'fail') { } return 0; }
std::stringなどの普通の文字列型を使用すればパフォーマンスの劣化は避けられませんし、#include
でもやっぱり一番良いのはenumですよね。