大阪市営バス 信託失敗…債権674億円放棄し民営化へ - 毎日新聞を読んで。
記事に「交通局の運転手に比べて大阪シティバスは人件費が1人当たり300万円程度安く…」とあって驚きました。人件費の半分 = 従業員年収とざっくり考えれば150万円くらいでしょう。
つまり、仕事の内容は同じだけど、仕事の価値は150万円低く評価されたわけですから、なかなかショッキングです。
自分の仕事は、自分の年収に釣り合っているだろうか…。
メモ: 技術系の話はFacebookから転記しておくことにした。
最近cpprefjp(リンクはこちら)のコミット権をいただいたので、小物ネタから書いてはコントリビュートしていますが、一見簡単そうに見えたC++11のoverrideとfinalの経緯を調べていたら、土日が終わってしまいました。
実はoverrideとfinalは簡単ですが、同時に検討されていたhidingが鬼門でした…。
以下の例のように「間違って基底クラスの仮想メンバ関数を隠した(hiding)ときエラーにしたい」という提案から始まりました。
class A {
virtual void func();
};
// check hiding and override
class B explicit : public A {
// NG, 間違ってA::func() を隠していないか?
void func(int a);
// OK, あえてA::func() を隠すと宣言している
void func(double b) new;
};
でも事はそう単純ではありませんでした。overrideはメンバ関数同士でしか発生しませんが、hidingはメンバ関数とメンバ関数以外でも発生するため、考慮するケースが多いからです。
C++ 標準化委員会のペーパーには、問題となる例が挙げられていますが、あえて私見で「あ、これダメだ」と思ったヤツを1つ挙げると、以下の例です。
class A {
virtual void N();
};
class B explicit : public A {
// B::NはA::N() を隠すからnewを宣言すべき、でもnewを書く文法は?
enum { N };
};
初見の方はnewを使い回すなよと思うでしょう。実際、最初はhidingという名前で提案されました。しかし問題がありました。
struct A {};
struct B {
// これは構造体の宣言?変数の宣言?
struct A hiding;
};
これらの問題を回避するためにenumの中のNやらMやらにまで、一々newと書く文法を新たに作るのも、不細工極まりないです。
他にもusing、多重継承など、かなり広範に渡ってhidingが起きるため、これはダメだと判断されたようでexplicitとnew (hidingを宣言するための) は、C++11策定の最後辺りでDrop されました。
C++14にも採用されていないように見えるけど、次のC++ 規格で入るのかな…??
メモ: 技術系の話はFacebookから転記しておくことにした。
< | 2016 | > | ||||
<< | < | 02 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | - | - | - | - | - |
合計:
本日: