三項演算子のようなもの


とあるC言語で書かれたソースコードを見ていたのですが,こんなのがありました.


#define some_value (foo ? bar : baz)

...

void some_func(){

    some_value = qux;

}


some_valueはファイルの先頭で定義されていて,複数の関数内で使われていました.

うーん・・・凄いなぁと.
# マクロや三項演算子を左辺値にするだけではなく.


で,寝る前に何か思いついたので書いてみたのですが,何にも面白くない・・・.

クラスを使ってもっと上手くやりたかったけど眠いので日記のネタ程度にw


template<
  class T
>
const T& which(bool cond, const T& true_value, const T& false_value){

  return (cond ? true_value : false_value);

}


template<
  class T
>
T& which(bool cond, T& true_value, T& false_value){

  return (cond ? true_value : false_value);

}


int main(){

  int x = 0;
  int y = 0;

  which(true, x, y) = 5; // x = 5
  int z = which(false, x, y); // z = y = 0

}


後でBoost.Asioを使うので,そのことをメモ書きしようかなぁ.

でも恐らくネットワーク通信だけだし,サンプルにありそうなコードで物足りそうだから覚書コースだ.