C++WGアドホック会議レポート

正式な議事録はそのうち公開する予定なので
これは簡易レポートです。


この会議で決まったことは、まだ日本の正式コメントではないので注意。


まず、集まった人数は30人ほどでした。
(直前で何人か来れなくなったので)


議論の順番は、コメント順ではなく章順になってます。


【77.バックスラッシュが足りない】
Raw String Literalのサンプルが間違ってるんじゃない?というもので
Raw String Literalの仕様を見たところ、Rawと判断する文字列は"["と"]"で囲む必要がある、とか書いてあって「これ何のためにあるの?」といった議論になり、30分くらいかかった。
詳細は、id:haru-sさんやid:hito_hppさん、光成さんの以下のエントリを参照してください。


C++WGから帰宅 - ...ing logging 3.0

Raw string Literalについて - 本の虫

憂鬱な午後のひととき 12月6日


【76."if"が抜けている】
ifがあってもなくても意味が変わらない文章なので却下。


【01.decltypeにスコープ解決演算子(::)を使用できない】

vector<int> v;
decltype(v)::iterator it = v.begin();

と書きたいよね、というもので、OK。


【44.Lambda式にMove Captureがほしい】
Non-CopyableだがMovableなオブジェクトをラムダ式に渡すときに&&キャプチャは必要なんじゃない?というもので、これもとりあえずOK。


【83.ラムダ式で生成される匿名関数オブジェクトにresult_typeがほしい】
Callableコンセプトとかを使えばresult_typeを持ってない関数オブジェクトからでもresult_typeを取得できるけど、C++03のresult_typeを要求するようなライブラリ(Ovenとか)にラムダ式を渡す場合にはどうしてもほしくなる、というもので、これもOK。
(result_typeがないと、transformのRange-baseアルゴリズム実装できない><)


【70.constexprの再帰を認めるべき】
反対意見なく、これもOK。


【36〜38.inline namespace関係】

namespace foo{
    inline namespace bar{
        int hoge;
    }
    int hoge;
}

--------foobar.cpp---------------
namespace foo{
    inline namespace bar{
        int hoge;
    }
}

--------foo.cpp---------------
namespace foo{
    int hoge;
}

がエラーになるべきかどうかが明記されていないので明記してほしいというもので、これもOK。
前者はおそらく、定義時にコンパイルエラーは出ないが、foo::hogeを使うとあいまいになってエラーになり、後者は別な翻訳単位なのでコンパイルもリンクも通るはず(なので、後者はコメントしない)。


【04.noreturn属性の挙動】
noreturn属性を指定した関数が、返るかどうかを実行時ではなく静的に判断したいというもので、
assert(0)や、インラインアセンブラが絡むと難しくなる等々の意見があり、exit等にnoreturn属性を付けてほしい、というのと「せめて関数が返る場合に未定義エラーというのはどうにかしてくれ」というコメントに修正することになった。


【75.abstract-declaratorの構文定義で、"..."が残っている。】
Variadic Templatesのための"..."なので却下。


【30.文が抜けている】
これは勘違いだったようなので却下。


【27.システムに関わる文字列でstd::string/char*はUTF-8であるという規約が欲しい】
これが一番揉めたのかな?例外クラスやもこれに関連してけっこう揉めた。
charをUTF-8にするようなoptionalな機能がほしい、という結論になったんだっけ?
setlocale("UTF-8"); とかだと地域情報が書けないから日付とかどうすんのよ、とか、main関数がそもそもcharをパラメータにとるからmain関数の前に決まってないといけないよね、とか、標準コンパイラオプション・・・はできないよね、とか、標準pragma!標準じゃないからpragmaなんだよ、とか、TR2XMLライブラリが予定されてるんだからUTF-8を・・・とか、etc...。
だれかレポよろ。


【84. nested_exceptionでは厳密なエラーハンドリング処理においては不十分で使い物にならない】
道化師さんがあとでnested_exceptionに代わるツリー構造の例外クラスを提案する予定。


【66.bindの戻り値の型に、Moveに関する要求を入れて欲しい】
いまはbindの戻り値の型がunspecified typeになっていて、Move可能かどうかわからないので明記してくれ、というもので、ないと本当に困るのでOK。
bindのパラメータも今はCopyConstructibleしかないので、MoveConstructible版もほしい、というコメントも追加。


【14.コンセプトによってイテレータの機能が制限される】
これもけっこう揉めたんだけど、コンセプトのデフォルト実装や、Boost.Rangeの設計を考えると
コンセプトのテンプレート化(パラメタライズ化)は難しい、ということになり、InputRange、OutputRange、ForwardRange、BidirectionalRange、RandomAccessRange、を提供してくれ、というコメントに修正することになった。
(でも、5個も用意するんだったらテンプレートでひとつにまとめて・・・)
Range-baseアルゴリズムはC++0xでは提供されないので、これは難しいかもしれない。



あと、昼飯は私と、Cryoliteさん、hitoさん、uskzさん、meltさん、道化師さん、光成さん、shelarcyさん、出水さん、あんどちんさん、あおいたんの11人で中華料理を食べにいった。
何話したんだっけ?
CryoliteさんのTwitterアイコンが一時期パンツだった件についてだっけ?


uskzさんとCryoliteさんはC++WGに参加することになったんだっけ?
他にも参加してみたい人がいれば私に連絡ください。
そういえば、次の会議の日程決まってないなー。