にゃははー

はへらー

C++

そういえば...

そういえば今までやたらバグとかをつついてきたけど、それがfixされてるかは確認してませんでした。ということで gcc (GCC) 4.6.0 20101104 (experimental) を使って今までつついてきたものがfixされてるか調べました。 GCC4.6.0のinternal compiler error -…

GCC4.6.0のinternal compiler error

ついにconstant expressionがサポートされたGCCですが、一連の更新で多くのバグが混入しているようです。 ということで発見したもの例によってGCCのバグレポは見てないし、書いてないので既出かも。

「ご趣味は?」 「えぇ、GCCのバグ探しをたしなむ程度に」

タイトルはあんま関係ない。gcc (GCC) 4.6.0 20101031 (experimental) でのこと。unrestricted unionsを試してみたら怒られた。以下コード。

20101029(20101028?)でのエンバグ?

trivialコンストラクタとかdefault指定とかconstant expressionの仕様が変更してなければエンバグでしょう。

先日の基底クラスの型名云々のやつ

C++

id:hito_hppさんから基底クラス名は派生クラスのスコープにあるというありがたいお話を頂いたが、それでもたまに引っかかったので、それについていくつかのコンパイラで試してみた。普通なら仕様書嫁だろうが、C++03(もしくは98)の仕様書を私は持っていない…

C++1xでぜひいれて欲しい機能

0xじゃないよその次の話だよ。C++って多重継承あるから難しいけど、基底クラスの型を取得する構文がほしい。 例えばdeclbase()とかbaseof()とか...

やっぱスマートにソートしようぜ

C++

真のC++erはコンパイル時に全てを解決する - にゃははーでやってたコンパイル時ソートですが、気が向いたので久びさにいじってました。 で、前のはstd::vectorに再帰を使ってpush_backしてましたが、range based forも実装されたし、別のコンテナ使うとかナ…

lambdaが更に解らなくなってきた・・・

C++

とある先輩から関数内のstaticかつlocalな変数はキャプチャーしなくてもlambda-expression内で参照できるとかできないとか聞かれて、VC2010だとなんかclが落ちるらしく、gccで試したら何も言われないで通った。最初この話しが上がったとき、関数内のlocalな…

lambdaについて調べてたら・・・

$ gcc --version gcc (GCC) 4.6.0 20101002 (experimental) Copyright © 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTI…

range based forの問題かstd::initializer_listの問題かstd::stringの問題か

$ gcc --version gcc (GCC) 4.6.0 20101002 (experimental) Copyright © 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTI…

llvm clangのその後

とりあえず本家に書いてあったパスの追加をしなかったらうまくいった。 が、今度はstd::bad_allocが投げられるという。なんかpstadeまわりのパースかなんかに失敗してるらしい。まぁc++0xの対応状況もgccに追いついてないから少し様子見かな

C++0xのlambdaかどうかの判別(できなかったorz)とかBoostとか

C++

なぜこんなことを考え始めたかというとid:faith_and_braveさんがtwitterで「Boostがなんやら」「lambdaでエラーになる」とか言ってたのを見て、挑戦してみたくなったからである。結論から言うとできなかったわけだけど、自分が以下にSFINAEを理解できてなか…

GCCのdecltype

gccのPage Redirection - GNU Project - Free Software Foundation (FSF)には実装されてると書いてるけど、std::identityが無くなったし、decltype( hoge )::fugaって取れるように仕様変更入ってるんだからできるだけ早く対応して欲しい・・・いちいち自分で…

よく考えれば当たり前

C++

例えば struct hoge { void fuga( void ) {} }; reinterpret_cast< hoge * >( NULL )->fuga(); は通る+動く。まぁアーキテクチャ依存だろうけど。 つまりhoge::fuga()はコンパイル時に static void fuga( hoge *this ) {} fuga( reinterpret_cast< hoge * >…

libtoolとgccとcppと

C++

libtoolに食わせたC++のコードのプリプロセッサが最後まで展開されないという。 gccだけとかcppだけとかで出力を見てもすべて展開されてるんだけど... libtoolで使うプリプロセッサとgccの使うプリプロセッサって違う?ってか違ったとしても展開されないのは…

また踏んだ?

私自身ドラフト資料に追いつけていないのでバグなのか正確なところは解らないですが、decltypeに問題のようなものがありました。 以下のコードのdecltypeでinternal compiler errorと出ます。 #include <array> using namespace std; struct hoge { array< int, 3 ></array>…

本日のGCC

Range based forが実装されましたね。確かBoostに範囲を作るテンプレートがあったような気がしたので(Boostはあんま触ってないから解らない)なかなかすっきりとしたループが書けるようになりますね。突っ込めるオブジェクトの要件ってbegin()とend()の存在だ…

新潟

C++

モチベーションとかはここ新潟アクセス修飾子/指定子のご提案 - お前の血は何色だ!! 4を参照されたい。で何をするかって言うとGCCに実装しようということ。対象バージョンは最新リリースのGCC4.5.1。(ただ、リポジトリから引っ張ってきたのでGCC4.5.2(prerel…

今日は

C++

わんくま同盟横浜勉強会#3です。変なTシャツ着た盲目的狂信者が行くので、見かけたら声かけて下しあ。 誰からも相手にされないと悲しいのです。一目瞭然で変人なのであしからず。それはそうとBjarne氏のerrorをちょっと眺めるとexportが無かったことにされて…

わんくま感想

C++

とりあえず猛者達の顔は覚えたつもりでいる・・・この人たちがC++かぁ(委員会的な意味で) そのうち「俺がC++だ」とか言えたらなーとか思いながら、俺英語苦手なんだよな。特に会話。 機会があったらAdhoc会議とか参加してみたいな。あと、シーランド公国の伯…

GCC4.6のバグ

いつからか解らないがGCC4.6で以下のコードが通らなくなっている。多分最近のupだろう。 gcc --versionは以下の通り gcc (GCC) 4.6.0 20100826 (experimental) Copyright © 2010 Free Software Foundation, Inc. This is free software; see the source for …

staticのstatic

C++

ちょいと気になったんだが、以下のコード class hoge { static int fuga; }; static hoge piyo; ってのがあったら、hoge::fugaってhogeのインスタンスについてすべてデストラクトされたらデストラクトされることが仕様として保証されてるんかな? あと、逆に…

llvm

llvmのsvnのrevisionがついに111111を超えた。いや、別に何があるってわけじゃないしsvn log -r 111111してもそっけない文が書かれてるだけだったけど、なんというか個人的に感慨深かった。私が持ってるリポジトリのrevision(commit)は多くても500程度なので…

届いた

何がっていうと、Tシャツを2枚ほど注文したんですよ。オリジナルデザインのやつ。今度の横浜でのわんくま同盟に着ていく予定なので、C++erかつvimmerな人は一発でその基地外さに見つけることができるでしょう。 Lぐらいがちょうどいいと思って発注したらで…

GCC4.6.0でのinternal error

gcc (GCC) 4.6.0 20100809(experimental)で確認。 struct { int hoge; void fuga( void ) { [&]( decltype( hoge ) ) {}; } }; なんかdecltype( hoge )のパースで乙るらしい。セグフォします。回避方法はdecltype( this->hoge )とすること。あー早くdecltype…

std::forwardとか

C++

いまだstd::forwardの存在意味というか、何に使われるのかがよくわかってない。

とりあえずPDF版1章

C++

先にPDF版は読めるので、1章(?)だけ読んでみた。我らがBjarne総統だ。個人的にいろいろ痛いところを突かれてるのが確かで死にたくなってくるのだが、私個人が気になった箇所がある。 それは13ページからの「C++を教える方法」だ。

あれ...

std::identity消えた?5日のgccいれたらなくなってたんだけど... そしてstd::forwardの定義が凄まじいことにwwwstd::identity無いとdecltype(fuga())::hogeができない今、decltypeしたのを直接的に受け取る方法がない... まぁ、std::enable_if::type::hogeす…

型と値の共存

C++

んーprogrammer's highというかなんか変なの考えたのでとりあえずうpしてみるけどこんなん使うやついるかねw #include <typeinfo> struct _type_or_value_impl { typedef _type_or_value_impl this_type; virtual ~_type_or_value_impl( void ) noexcept {} virtual </typeinfo>…

g++のprofile mode

g++4.5からprofile modeなるものが使えるようになった。->Chapter 19. Profile Mode これはSTLのコンテナとかで最適なものをプロファイリングしてくれるらしいんだが、入り組んだ使い方をすると最後の出力が非常に見にくくなってしまう。 結局 advice= って…