2011/12/07

Recent entries from same category

  1. RapidJSON や simdjson よりも速いC言語から使えるJSONライブラリ「yyjson」
  2. コメントも扱える高機能な C++ 向け JSON パーサ「jsoncpp」
  3. C++ で flask ライクなウェブサーバ「clask」書いた。
  4. C++ 用 SQLite3 ORM 「sqlite_orm」が便利。
  5. zsh で PATH に相対パスを含んだ場合にコマンドが補完できないのは意図的かどうか。

この記事は Oppai Advent Calendar 2011 の7日目の記事です。
C++11のユーザ定義リテラルを使うと、ユーザ指定のサフィックスに従って型変換や任意の処理を行う事が出来ます。
今日はこれを使って、おっぱいを判定するコードを書いてみました。
#include <iostream>
#include <string>

#define X(x) #x ")"_oppai
#define _(x) "(" #x ")(" X

char constoperator "" _oppai(char const* str, std::size_t len) {
  std::string x(str, len);
  return
    x == "(・)(・)" ? "ハリのあるおっぱい" :
    x == "(.)(.)"   ? "垂れ気味のおっぱい" :
    x == "(◎)(◎)" ? "立体的なおっぱい" :
    x == "(○)(○)" ? "乳輪が大きいおっぱい" :
    x == "(●)(●)" ? "乳輪が大きく、黒いおっぱい" :
    x == "(。)(。)" ? "色が薄く、左向きのおっぱい" :
    "もはやおっぱいではない";
}

int
main(int argc, char* argv[]) {
  std::cout << _(・)(・) << std::endl; // ハリのあるおっぱい
  std::cout << _(.)(.)   << std::endl; // 垂れ気味のおっぱい
  std::cout << _(◎)(◎) << std::endl; // 立派なおっぱい
  std::cout << _(○)(○) << std::endl; // 乳輪が大きいおっぱい
  std::cout << _(●)(●) << std::endl; // 乳輪が大きく、黒いおっぱい
  std::cout << _(。)(。) << std::endl; // 色が薄く、左向きのおっぱい
  return 0;
}
ユーザ定義リテラル便利ですね!
Posted at by