セミコロンレスc++	
KMC id : kazakami
twitter @Kazakami_9
自己紹介	
  KMC id : kazakami
  github: kazakami
  twitter : @Kazakami_9
  :tofu_on_fire:
  Network (destruction) Engineer
  留年はいいぞ	
📛
自己紹介	
  https://よさ.jp
  http://😇.よさ.jp
セミコロンレスc++	
  ある人「c++はセミコロン書かなきゃいけないからダサい」
c++はセミコロンなくても書ける
Hello World	
void main(){
std::cout << “Hello World” << std::endl;
}
ダサいc++	
void main(){
if (std::cout << “Hello World” << std::endl){}
}
セミコロンレスc++
(返り値が非voidな)関数呼び出し	
f(arg);
ダサいc++	
if ( f(arg) ){}
セミコロンレスc++
(返り値がvoidな)関数呼び出し	
  ifの条件文には何かしらの値を入れなければならない
  if (void_return_func()){} はできない
  ところでカンマ演算子って知ってますか
  e1, e2 はe1を評価し、その値を捨てe2の値を返す
  (void_return_func(), 0)の値は0
(返り値がvoidな)関数呼び出し	
void_return_func(arg);
ダサいc++	
if ( void_return_func(arg), 0 ){}
セミコロンレスc++
変数宣言	
{
int i = 114514;
//iを使う式
}
ダサいc++	
(for i : {114514}){
//iを使う式
}
セミコロンレスc++
forループ	
for (int i = 0; i < 810; i++){
exp;
}
ダサいc++	
(for i : {0}){
while (i < 810){
if (exp){}
if (i++){}
}
}
セミコロンレスc++
(返り値がvoidな)関数宣言	
  セミコロンレスc++ではreturn文を記述できない
  しかしc++にはポインタがある!!
(返り値がvoidな)関数宣言	
void plus (int a, int b. int	*	r){
if (*r = a + b) {}
}
void main(){
for (int * r : {new int(0)}){
if (plus(4, 5, r), 0){}
if (std::cout << *r << std::endl){}
}
}
セミコロンレスc++
(返り値が非voidな)関数宣言	
  毎回newするのは面倒
  やっぱりreturnしたい
  通常return は値をアキュムレートレジスタに乗せて戻っている
  値がアキュムレートレジスタに乗った状態で戻ればいい
  returnなくても関数終端に到達すれば戻る
  式は評価された後アキュムレートレジスタに乗せられる
  式を評価した後関数終端に達すれば良い
  レジスタの気持ちになろう!!
(返り値が非voidな)関数宣言	
template <class T>
T id(T a){
if (a) {}
}
int plus(int a, int b){
if (id(a + b)) {}
}
int main(){
f (std::cout << plus(a, b) << std::endl) {}
}
セミコロンレスc++
今後の課題	
  構造体をスマートに表現する
まとめ	
  セミコロンレスc++でも変数、関数,if, forを扱える
  セミコロンフリーでダサくないオシャレなc++ライフ
参考文献	
Semicolonless Java 2012 - プログラマーの脳みそ     
http://d.hatena.ne.jp/Nagise/20120407/1333767870
  セミコロンレスc++をやろうと思った元ネタ

セミコロンレスc++