Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

ブックマーク / dechimal.hatenadiary.com (9)

  • プリプロセッサで足し算しましょう! - デ-mk6

    プリプロセッサは所詮文字列置換、計算なんてできやしない…そう思っている方は多いでしょう。しかしそれは違います。計算できます。 日の目的はプリプロセッサで足し算です。ADD(3, 2)と書けば5と答えてくれる関数マクロを作ってみましょう。 おっと、#define ADD(m, n) ((m) + (n)) とかではありません。これで足し算をするのは誰か、それはコンパイル・実行したときの処理系です。 今日の目的はあくまでも、プリプロセッサという処理系に閉じた足し算を定義することです。言い換えればプリプロセスが終わった時点で結果がでていないといけません。あとなんか細かいことはある感じがしますが、もうめんどいので早速始めましょう。 まずプリプロセッサにおける数を取り決めておきます。数とは、数字のみで構成されたトークンのことです。数字とは、トークンとは何かなどはめんどいので常識的に考えてください。

    プリプロセッサで足し算しましょう! - デ-mk6
    tyru
    tyru 2016/12/19
    記憶には残ってたけどブクマしてなかった…
  • 生きてることをアピールするために否定演算子の後置をする - デ-mk6

    私が成仏した、または地獄送りになったのではないかという疑惑を払拭するために大変どうでもいいコードで更新。 http://www.ideone.com/hXj1y 上のコードは ということで id:kikairoya さんが実際に動かしてみたものです。 つまるところ自分では試してない!他力願上等!

    生きてることをアピールするために否定演算子の後置をする - デ-mk6
  • 新しいswitch statementのご案内 - デ-mk6

    前に http://ideone.com/7NnRj というのを書いて、その後パターンマッチとかできればうれしいなーと思ったので、そんなものを書いた。書いてるうちにぼくのかんがえたさいきょうのぱたーんまっち。という記事が先に上がってたのでこれお蔵入りかなーとか思ったけど、せっかくtraitsで拡張できるようにしたんだし公開しよう、そうしよう、というわけで公開します。ほげー 実際のところはパターンマッチというか、boost::variantっぽいものから中に入っているオブジェクトを取り出そうと試みて、取り出せなかったら次の節を試して、取り出せたらそのオブジェクトをtieで初期化させろみたいにバラす、というのを同時にやるものです。query, unwrap, unpackというtraitsがあって、説明は省略(うまくできない)。まぁcpp -E -Pでもしたあと適当に改行とか入れて読んでくださ

    新しいswitch statementのご案内 - デ-mk6
  • Unicode, UCS-2/4, UTF-8/16/32についての整理 - デ-mk6

    ※注意:これは私が調べた結果をまとめたものなので、間違いがあれば指摘していただけるとありがたいです。 用語 ここで整理したいことについて話せるようにするための説明なので、正確ではないです(符号化文字集合とか符号点とか)。 文字集合 文字の集合 符号化文字集合 文字と負ではない整数(または整数列)の対応表。その整数が、コンピュータで扱うビットの並びそのものとは限らない。コンピュータでは、この整数を符号化方式によって変換したものを扱う。 符号点、符号位置、コードポイント 符号化文字集合で、文字に対応している整数(または整数列)のこと。「符号位置」はUnicodeでの呼び方。 符号化方式 符号点を、コンピュータで扱うビット列で表現するための変換方式。よく「エンコーディング」と呼ばれるものはこちら。符号化符号化うるさいので、ここでは「エンコーディング」ということにする。 ※「符号化文字集合」と「符

    Unicode, UCS-2/4, UTF-8/16/32についての整理 - デ-mk6
  • Boost.勉強会#3で適当なことをしゃべってきました - デ-mk6

    私の発表資料: http://www.slideshare.net/digitalghost/preprocesstime-lambda-expression ソース: http://patch-tag.com/r/digitalghost/pplambda/home , http://sites.google.com/site/ilikemanaka/code/pplambda.tar.bz2 あぁどうしよう。今回は大阪開催なので旅程がなくて書くことがないのであった。終わり。 などというだけではあんまりなので、まぁ千里中央の地形はやばいですね。前にも第一回GC勉強会のときに行きましたが、会場の建物に入るまでやっぱり迷いました。地上なのにぐぐる地図が役に立たないというすばらしい地形ですね。あと誰も御堂筋線が地下鉄だと信じてくれないのですが、一つ誤解があって、御堂筋線は新大阪以北だと江坂まで

    Boost.勉強会#3で適当なことをしゃべってきました - デ-mk6
  • Boostのgit mirrorを見つけました - デ-mk6

    http://repo.or.cz/w/boost.git svn upとか遅すぎてやってらんねーよボケがという人へ。 git pullで光の速度!!!

    Boostのgit mirrorを見つけました - デ-mk6
  • Boost.勉強会#2にいってきた話を書こうと思うけど、めんどくさいからどうしようか悩んでいる - デ-mk6

    勉強会で配る用の名刺を作らねばとプリンタのインクと名刺用の紙を買ってきたわけですが、前日の夜にハードディスク整理を始めたから名刺作る時間がなくなってきた上に、家のプリンタが大きすぎて名刺印刷できなかった。やることがあるときに限って掃除をしたくなるのは何も部屋だけではないということが分かる、心温まる一場面ですね。仕方ないのでわんくまに参加したときに作った名札を持っていくことにした。この時点で7時。当は開始の10時に間に合うように出発したかったけどそれなりに急いで新幹線に乗ったわけです。で、セッションのお題目を確認するためatnd開いたらなんと13時からであった。まさかの開始時間詐欺!訴えてやる!!!!! QJD(急に時間ができたので)の私は前回江戸に来たときの続きで秋葉原を見て周ることに。日中のクソ暑い中、暑さでへばった犬(not めるぽん)のような表情で歩いていると突然「ちょっといいです

    Boost.勉強会#2にいってきた話を書こうと思うけど、めんどくさいからどうしようか悩んでいる - デ-mk6
  • C++/CLIについてのよくある誤解 - デ-mk6

    以前にも書いたような気がしますが、もう一度書きます。C++/CLI(仕様の邦訳)は、.netからC++やその他ネイティブコードのライブラリを楽に使えるようにするためと、そのための作業を楽に行うための言語です。「.netで使えるC++」ではありません。そういうことを言う人は悉くこの言語の厳つい顎で頭を砕かれ、手足をもがれて、腸をらい千切られ死にます。それが摂理なのです。あらがえません。C++/CLIは大きく分けてC++と、C++風構文を持つ何か.netっぽい言語(ここでは仮に「Cヰ」と呼びましょう)からなる、キメラです。二つの言語のコードは一つのファイルに混ぜて書くことができます。C++の部分はそのままC++です。何も違いはありません。GCもありません。ありませんが.netのGCにネイティブオブジェクト(要するにC++で作ったオブジェクト)を通知して管理させる方法はあります。interfa

    C++/CLIについてのよくある誤解 - デ-mk6
    tyru
    tyru 2010/04/16
    「genericなメソッドやクラスは、コンパイル時だけで世界が閉じるわけにはいきません。そのようなメソッドを含むプログラムから生成されたアセンブリを利用する側からでも、彼らが指定した型でメソッドを利用できるよ
  • タプルの要素数を数える - デ-mk6

    世間では空前のプリプロセッサブームですね! http://codepad.org/IwJ4sqA9 C++0xの規格を眺めていると、プリプロセッサのセクションに可変長引数リスト付きマクロが入っていたので、これを使って何か面白いことができないかと考えていたところ、タプルの要素数を数えることはできないだろうか、と思ったので、やってみた。gcc-4.3.3 -std=c++0x -E -Pで確認している。 タプルの要素数を数えるところはシンプルだけど、PP_IS_EMPTYはBoost.PPのものではなく、自家製。Boostのそれは、identifierか数値か空かしか識別できない(それぐらいだっけ?)。要素数不明のタプルを調べるには、いかなるトークンがコンマ区切りで何個きても識別できるようにする必要がある。で、これが異常に難しい。基はBoostのものと同じだけど、間に挟まるトークンによって展

    タプルの要素数を数える - デ-mk6
  • 1