[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/24 19:34 / Filesize : 170 KB / Number-of Response : 917
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++11/C++0x 15



1 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 23:27:34.48 ]
The C++ Standards Committee
www.open-std.org/jtc1/sc22/wg21/

Wikipedia
ja.wikipedia.org/wiki/C%2B%2B11

前スレ: C++11/C++0x 14
hibari.2ch.net/test/read.cgi/tech/1316760961/


744 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 16:32:45.60 ]
右辺値参照とかさっぱり理解できんけど
ただでさえ速いSTLが何もしなくてももっと速くなるなら有難い

745 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 16:48:44.63 ]
インテリセンスの性能が悪いのも
リファクタリングし辛いのも
全部マクロのせいや!

746 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 17:06:11.95 ]
トランスレータはデバッガ作るのが辛すぎる。

747 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 17:09:11.20 ]
D言語作ってる人って、失敗作ばっか作ってる人でしょ

748 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 17:14:43.22 ]
トランスレータはあくまで過去資源を利用するためのもので

749 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 17:24:03.08 ]
rvalue referenceは当然の機能だろ。
というか今までの、constなlvalue referenceでprvalueを束縛できることのほうが変だっただろ。
まあ、この挙動は今更変えようがないがな。

まあ、別に理解できんユーザーが理解する必要はない。
コピーやムーブの実装はライブラリ作者が考えることだ。
>>744のいうように、STLがなにもしなくても速くなる。
C++11では、STLのクラスを普通に関数の戻り値として返しても、
何のパフォーマンス上の問題もない。

std::vector<int> f() ;

int main()
{
  std::vector<int> v = f() ; // ムーブされる。ユーザーが詳細を理解する必要はない
}

750 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 17:30:13.28 ]
何のパフォーマンス上の問題もない、は言いすぎだな。
ムーブ後の一時オブジェクトのデストラクタだって走るし、
ムーブコンストラクタだってただでさえ肥大化傾向の実行ファイルのコードサイズを更に膨らませる。

GCのある言語や v = f() ; を f(&v); として最適化できるタイプの言語ならこういうのは全撤去できるかんね。

751 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 17:48:13.43 ]
かなり斜めだな。

752 名前:デフォルトの名無しさん [2012/03/17(土) 17:59:28.29 ]
>>749

うん、そうだ。

ま、せいぜい頑張ってくれ。



俺はつき合う気になれんがw



753 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:25:08.08 ]
入れ物を引数で渡したり戻り値をauto_ptr<std::vector<int>>とかに
する必要がなくなっただけで十分ありがたいです

754 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:26:16.53 ]
NVROも実装してなかったコンパイラがC++11をサポートできるのか

755 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:43:06.65 ]
D言語はGCが余計だったんじゃないかと思ってる

756 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 20:27:22.86 ]
>>750
つってもムーブ後のオブジェクトなんだから、
一切最適化されなかったとしても、関数呼び出しとか、
すでにムーブされた後であるかどうかを判定する条件分岐の実行とかそれぐらいだろ。

std::vectorだったら、確保した動的ストレージへのアドレスを格納している
ポインター型のメンバーが、nullptrであるかどうかの条件分岐ぐらいだろ。

コードの肥大化っていったって、
ムーブコンストラクターを書くのと、
ムーブ処理をその場にハードコードで実装するのは、
結局同じじゃないか。

757 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 20:35:42.42 ]
>>756
発想がC++に縛られてるなあ。
例えばf()がv領域をallocaしてそのままvとして使うなら、そもそもムーブという概念自体要らない。
そういう言語もあるんだよ。

758 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 22:21:34.90 ]
moveとか右辺値最適化とかの新機能についていけてないのだけど、
なんとなく>>750のように変換されるのかと思ってた。違うの?

759 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 22:56:00.14 ]
違うよ

760 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 22:57:42.75 ]
「最適化でコピーは消えてくれるよね……?」と心配しながら
ベクトルを返さなくてはいけなかったのが
「どうせムーブだし最適化されなくてもいいや^^」と安心して
ベクトルを返せるようになったってのはいいことだよ。

761 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:15:30.59 ]
ムーブも一応ムーブのコストがあるからなあ
戻り値最適化が期待出来る部分ではムーブは劣る

762 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:27:54.38 ]
コピーが最適化されて消えるところではムーブも消えるよ。

コピーなら消せる、ということがわかっている箇所で、
ムーブコンストラクタが定義されているときだけ最適化抑制するって
どんなアホコンパイラたよ



763 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:41:23.56 ]
>>758
ユーザー定義する方針なんで、
変換してくれるってのは根本的に発想が違います。

764 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:43:12.27 ]
>>754
出来れば嬉しい最適化と
必須の仕様の違いがありますから。

765 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 00:12:38.75 ]
>>762
そういう意味じゃなくてだな・・・
戻り値最適化使った方がいいケースで
ムーブがあるからムーブでいいやとするケースの話で

766 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 00:15:44.12 ]
どういうケースかよくわかんないからC++でお願いします

767 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 00:49:15.82 ]
ものすごく適当な例

std::vector<int> a = hoge();
foo(a);
a = foobar();
bar(a);

768 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 01:03:33.14 ]
vectorって代入される時にもともと持ってるデータを解放してるよな
ムーブでいらなくなったデータが一時変数のデストラクト時に解放されるのと比べて
本当に戻り値最適化のほうが性能的に有利になるのか?

ていうか、そもそも戻り値最適化って初期化する時だけしか有効にならないような

769 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 01:06:05.10 ]
考えるほどムーブのほうが都合がいいという結論になる

770 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 01:08:36.76 ]
2つ目のは戻り値最適化じゃなくムーブになる、という例だよ
swapの分だけコストはかかるはず

まあこの例だとこの程度どうでもいいんだけどね

771 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 01:46:57.56 ]
>>735
現時点でアセンブリに変換できてるんだから、
完全上位である必要ないだろ

772 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 13:51:34.67 ]
auto_ptrが理解出来てmoveが理解出来ない人は頭おかしい



773 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:09:37.16 ]
auto_ptrはもはや理解する価値がない。

774 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:17:45.12 ]
>>767
a = foobar();はC++03ではコピーになるからmoveより高コストになるな
それにa = hoge();でも
std::vector<int> hoge(){
  std::vector<int> r;
  ...
  return r;
}
のように書いた時点で戻り値最適化は効かないから
関数の実装にかなり制限が掛かると思うが

775 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:27:36.50 ]
いや、効くだろ

776 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:27:56.48 ]
>>774
NRVO搭載してるCompiler。具体的には、cl.exeなら最適化されるべ。

777 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:30:05.59 ]
>>773
auto_ptrはunique_ptr+moveに置き換わるんだから当たり前だろw
C++11からC++に入る奴の話じゃねぇよ

778 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:33:35.35 ]
流れぶった切るけど、noexcept()って、template<bool mode>てなテンプレート宣言したクラスで
noexcept( mode )って事ができるの?できないなら、throw()で十ぶんじゃね?なんの意味があんの?

779 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:35:17.43 ]
できるだろ。

780 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:35:45.15 ]
>>778
できるんじゃない? そういう用途だろう、当然

781 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:41:56.52 ]
boost::shared_ptr、std::auto_ptr、std::shared_ptr、
相互変換はどうすんだろうな。過去の資産を再利用するなら
古いポインター使いつづけるしか無いんだろうな。

782 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:45:18.13 ]
まあそうなるな



783 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:47:40.64 ]
はぁ?

784 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:52:32.20 ]
相互変換とか

785 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:56:36.23 ]
参照カウンタどうすんだよ

786 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:19:38.37 ]
boostとstdのshared_ptrに互換性がないのが困る

787 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:21:12.07 ]
別にboost::shared_ptr使い続けりゃいい
あるいはstd::shared_ptrに置換するか

788 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:53:38.67 ]
C++11になって、事実上の廃止ってauto_ptrの他にどんなのがあるの?

789 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:06:51.34 ]
unary_function類とbind1st類

790 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:10:38.39 ]
あんまりお近づきになりたくない機能だと思っていたのでなによりです

791 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:34:17.38 ]
bind廃止なのか…

792 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:43:21.59 ]
bindが追加されたからいらなくなったんでしょ



793 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 07:23:11.87 ]
boostのやつが導入されたんだっけ
別にラムダでいい気もするけど

794 名前:デフォルトの名無しさん [2012/03/20(火) 17:48:44.11 ]
テンプレ引数付きtypedefってクラス内のtypedefでも使えたりするんけ?
いままでクラス内クラスについてはテンプレに出来なかったよな

795 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:13:04.34 ]
あーもうこんな複雑な言語、個人で使うならともかく、それなりのプロジェクトで使うとなると・・・。
これ、もう、オタクの玩具でしょ。

796 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:20:28.61 ]
エイリアステンプレートはクラス内でも使える。
ただ、本当にメンバーテンプレートなエイリアステンプレートを使いたいのか?
苦労するだけだぞ。

struct X
{ template < typename T > using A = T ; } ;

template < typename T >
void f()
{
  typename T:: template A<int> i ;
}

int main()
{
f<X>() ;
}

797 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:20:31.35 ]
そもそも、システム開発用の言語がこんなに複雑な必要性って、在るのかねぇ。

798 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:22:47.48 ]
システム開発用の言語だからこそ
高速化の為なら何でも取り入れるべき

799 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:28:17.17 ]
システム開発的には安定性の方が重要だよ。
だから、Cでシコシコやってるのが丁度よい。

800 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:39:36.68 ]
>>796
template< typename T > using Vector = Geometory::Vector<T, 2>;
ベクトルの次元は絞るが、型は何でもいい場合。一種のカリー化したいとき。

801 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:48:19.55 ]
C11の_Genericみたいな糞機能はC++に輸入しないで欲しいよな
まあこれに限らずC11普及するのかよって話もあるけど

802 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:04:29.71 ]
ABIを壊さずにオーバーロードを実現するための
_Genericは今更C++には無用だろ



803 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:30:39.42 ]
C99すら・・・

804 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 20:54:57.83 ]
>>799
安定性と「Cでシコシコ」の関連が不明です。

805 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:00:03.01 ]
Cなら10年前どころか20年前のコード見ても古いと感じないが
C++の10年前のコードは腐臭を放ってる

806 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:01:20.58 ]
それ、個人の慣れの問題じゃないの?

807 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:03:04.20 ]
Cってだけで時代を感じるな

808 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:40:34.26 ]
C++は仕様が固まってから日が浅いからね

809 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 22:40:14.22 ]
>>808
まだ固まってない

810 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 23:12:55.33 ]
使い方判らない機能は必要のない機能だから使わない方がいいよ。

いずれ、あー、こんな機能あれば安全なのになぁって必要になるときが来るけどね。
それまでは使わなくてよろしい。

811 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 09:00:55.10 ]
>>810
基本はひととおり知っとく必要がある。

そうやって必要な知識を遠まわしにして、
ものすごい面倒で複雑なロジックにする
アホがいっぱいいるんだ。

812 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:24:26.71 ]
積極的に使わなくてもいいが、知らなきゃ他人のライブラリは使えなくなるからな



813 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 01:21:11.57 ]
規格そのものとは関係ないが、翻訳単位が関数単位に出来ないかねぇ。
一つの関数なおす度にファイル一本コンパイルしなおすっつうのもウザい。

814 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 08:23:57.47 ]
1ファイル1関数にすればいいのでは

815 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:50:16.86 ]
てめえで1つのファイルに書いておきながらうざいとか言っちゃう人って

816 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 20:25:44.96 ]
そもそも構造違うけどSmalltalkなら関数(Method)単位で処理してくれるんだけどね

817 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 20:28:39.00 ]
Common Lisp もな

818 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:30:18.91 ]
(object.*function);
関数のポインタを逆参照したときの値って
未だ未定義なんだよな。もうクロージャにでもすりゃいいのに。

819 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:03:03.61 ]
関数とメソッドの違いに注意な

820 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:12:19.98 ]
メッセージを送るセレクタにより起動されるのがメソッド
ディスパッチで呼び出されるのがメンバー関数

821 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:16:29.95 ]
最近はメソッドをまともに実装した言語も少ないな

822 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:32:30.62 ]
int (__closure function)(int) = object.Function;
int (__closure function)(int) = object.*Function;

Borlandのコンパイラじゃこんな感じにクロージャに出来たんだけどな
C++本家にゃ取り込まれず今じゃ.net環境でdelegateとして活躍しとるとは
なんか皮肉だのう



823 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:40:32.27 ]
>>822
だってそれDelphi互換用のためだけの機能だったし。
__closureって名前も紛らわしすぎる。ラムダが入った今となっては特に。

824 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:48:43.06 ]
Delphi互換かどうかはどうでもいいし、別に__closureって予約語もいらん。
ただ、std::function<int(int)> function = object.Function;って書けるなら
ラムダ書かずに済んでありがたい。そもそも、関数がオブジェクトだってのは
Smalltalkの様で自然だ。

825 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:52:30.80 ]
C#なみにラムダの記述量が減ってくれるとありがたいのだが

826 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 23:53:10.27 ]
>>819
だよな。
メンバ関数のことをメソッドって言うな!! って思うよな。

827 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:56:46.31 ]
それでもまだBlocksさんに比べれば……

828 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:59:48.18 ]
>>824
変に規格に入って、VC++のABIがBorland(ってか現Embarcadero)のそれと違ってしまったら
肝心のC++Builderが困るじゃないか。

829 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:08:13.52 ]
>>824
型が弱すぎ

830 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:18:01.36 ]
>>829
なんだそれ?

831 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 08:58:04.19 ]
>>828
ABIなんて今までも互換性無かったのに今更

832 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 09:12:14.81 ]
クロージャっていまだに良くわからん



833 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 09:13:08.84 ]
>>831
折角64ビットで統一されたんだから

834 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 12:43:50.05 ]
Delphiってオブジェクト毎に関数ポインタを生成するために
動的コード生成やってなかったっけ

835 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:10:43.70 ]
>>834
やってない。単なる関数ポインタとthisの組。Dのdelegateなんかも同じだね。

836 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:23:43.28 ]
>>824
> std::function<int(int)> function = object.Function;

virtualだと単なるポインタじゃ済まないな。
関数内でthis使ってる場合も同様。
staticなメンバー関数以外、型安全にならないんじゃないの?

837 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:26:47.91 ]
>>836
object.Functionの時点でVMT参照して解決してしまえばいいんでそれは問題ない。
C++のメンバ関数ポインタと違って、後でthisだけ(orメンバだけ)取り替えたりはしないんだから。

838 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 19:33:27.87 ]
>>836
要するにstd::bindの構文糖にしろって事だけどわかってる?

auto function = object.Function;
auto function = std::bind( &Type::Function, &object. std::_1 );

それとも、もしかしてstd::functionの構造知らないの?


839 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:07:17.57 ]
最近のC++のディスられようがウザい。
DなんたらとかHasなんたらなんてどうでもいい。

840 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 13:16:00.33 ]
普通にC++について語ったらDisってるようになってしまう

C++がうんこすぎるから

841 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 13:31:57.59 ]
実用言語と実験言語を比べられてもな

842 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:36:27.00 ]
そうそう、C++は実験言語なんだからdisってもしょうがない。
その成果は確実に実用言語に受け継がれているよ。



843 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:46:29.13 ]
Dこそが真の実用言語だよなー

844 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:22:54.00 ]
>>842
その実用言語って何

845 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:39:47.12 ]
融通が利かないことを実用って言うのはちと無理があるわな
ネイティブ吐けてシステム記述できてCの資産が流用できる言語が他にないから
仕方なくC++使ってるってのが実際
いくら流行の機能入れても元が腐ってるからまともな言語設計が出来るはずもない
中の人に呪術染みた技巧コードを量産するテンプレートオナニストが集まりすぎた

Dが実用ってのはもっと無理だ
書きやすくていいんだけど今んとこ遊びにしか使えないよ

846 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:39:35.33 ]
>Cの資産が流用できる言語が他にない

これは大きいね。Cは仕様がコンパクトでコンパイラを簡単に作れるから
「高級言語としてCだけはある」みたいな環境がぼろぼろ存在するからね。
Cの資産は膨大だ。

847 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:55:18.22 ]
FFI知らんの?

848 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:54:59.63 ]
欧陽菲菲ネ

849 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:16:11.58 ]
もっとマシなものがあるなら流行っているはず

850 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:38:53.28 ]
>Cの資産が流用できる言語が他にない

Objective-Cがあるだろ

851 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:54:06.49 ]
はぁ?

852 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:20:52.18 ]
Objective-Cは11より変態だろ…



853 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:47:53.01 ]
ObjCが変態なのは否定しないけど、なんで変態なのかというと追加された文法がCから見てキモいからだろう。
(機能的には、OOP部分と組み込み型が別体系ってのは珍しくない。JavaやDもそうだし)
C++もenum classやunified function syntaxでCとは別物を被せる方向に舵を切ったじゃないか。ObjCのことは言えないと思うぜ。

あと曲がりなりにも実際に大規模に使われてる言語に対して「はぁ?」とか反応しちゃう視野の狭さが、
もっとマシなものが出てこない一番の原因と思うね。

854 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 05:38:10.01 ]
例え嫌々だろうが必要な時に使えて目的に適うならそれでいい。それがC++。

855 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 06:36:45.23 ]
C++は落ち目

856 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 06:40:37.27 ]
じゃあ上り調子のC#でも使うか

857 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:21:17.05 ]
ObjCはCの理念と反するからな
実行コストがかかりすぎる

858 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:47:11.20 ]
けっきょくC++しか選択肢がない

859 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:55:12.81 ]
そう思ってるのはC++使いだけ
C使いはC++も実行コストかかり過ぎだって思ってるよ

860 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:57:07.41 ]
けっきょくC/C++しか選択肢がない

861 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:57:08.63 ]
あぁ、「思ってる」な。知ってるぜ。

862 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:58:01.60 ]
そう思ってるのはC使いだけ
アセンブラ使いはCも実行コストかかり過ぎだって思ってるよ



863 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:59:52.11 ]
でもC++は落ち目で、Cはそうじゃないけどね

864 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:01:02.85 ]
CもC++使いもあと数年すればDに駆逐される運命だと言うのに哀れよのぅ

865 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:01:31.65 ]
>>849
良いものは自然と普及するという考え方はやめた方がいい

866 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:05:05.06 ]
Dってそんなにいいか?

867 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:09:40.92 ]
Dは誰にも見向きされずに消えていく…

868 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:21:54.93 ]
D覚えるくらいならC++と他の高級言語を使い分けるほうがいいからな

869 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 09:11:22.75 ]
C++覚えるぐらいならCと適当なスクリプト言語でいいって層の方が多いと思うぜ

870 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 09:36:59.37 ]
Dは配列でLinqできるのが面白かったけど、発展途上の時はメインには押し難い。GCはプラス要素だと思うんだけど。


871 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:05:16.29 ]
Objective-Cの実行コストってCに比べてどんくらい落ちるもんなの?
Effective C++の序文によるとC++は5%以内ってハゲが決めてるそうだけど
Objective-Cにもそういう約束事があるのかしら?

872 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:26:27.63 ]
>>871
Objective-Cのメソッド呼び出しはインタプリタ言語並の遅さ



873 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 12:46:09.18 ]
Objective-CはC++でラップしてしまえば
後はC++で作れる

874 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 14:39:25.43 ]
な、俺の予想したとおりになったろ

875 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:01:51.25 ]
ああ、すごいごい。

で、どんな予想したの?

876 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:37:31.14 ]
>>859
そういやCよりC++の方が遅いとはよく聞いたが、
あれの根拠はなんなんだ?実行イメージのロード時間?
C++のライブラリ使わない限りCと速度が変わることはないはずだが。
あと、C++のライブラリ使わず単に言語機能だけでコードを組むと
大概Cより速くなるんだがな。仮想関数とか分岐が固定されてると
インライン展開されて構造体に突っ込んだ関数のコールバックより速い。

877 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:39:38.88 ]
>>872
どんな言語でもメッセージ送信と同等の機能を組めば同じような速度だろうけどな。

878 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:43:00.53 ]
>>876
C++にはrestrictが無い(コンパイラの独自拡張を除く)

879 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:48:57.84 ]
>>878
なにC++11ならあるだろ。じゃないとインターフェース互換なくなる。

880 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:59:19.93 ]
Cとインターフェースレベルでの互換性なくしたら標準ライブラリとか阿鼻叫喚になるわな。
何が楽しくて同じ関数をC用とC++用二つもつくらにゃならんのだ。

881 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 21:03:59.88 ]
>可変長配列 (VLA) は含まれない (天のお恵みに感謝!)
www32.ocn.ne.jp/~ons/text/CPP0xFAQ.html.ja#C99

何がお恵みに感謝だよ。シネバいいのに。


882 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 21:46:47.36 ]
C++11にrestrictがあるというソースくれ



883 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 22:15:49.72 ]
ねえよ

884 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 22:27:35.98 ]
>>882
restrictがあるというと正確ではないかもしれんがC++ 11 FDIS §17.2のあたり

885 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 23:07:03.45 ]
>>871
んなこたぁない

886 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:56:53.40 ]
>>884
C++にはrestrictが無いって書いてあると読めますね

887 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:59:42.26 ]
より正確には、CのライブラリにrestrictがあってもC++はそれを無視すると書いてある

> The descriptions of many library functions rely on the C standard library 
> for the signatures and semantics of those functions.
> In all such cases, any use of the restrict qualifier shall be omitted.

888 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 07:19:37.77 ]
無視しろっていう意味ではなくて
restrict を消したヘッダを別に用意するか
マクロで消すかしろってことだと思うな、その箇所。

889 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 07:22:31.14 ]
そうなんか。処理系が頑張るんじゃなくて(ある意味人力で)
restrictの記述を落とすのか...
確かにそう読めるな

890 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 07:26:35.37 ]
素直に無視すりゃいいのになんでそんな面倒な事になったんだ?

891 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 08:28:56.21 ]
17.2 は
「C標準ライブラリは一部変更を加えて、C++でも提供する」

細かい変更箇所はあとで言うけど
restrict についてはいちいち述べているときりがないから
「restrict は一律消去で」ヨロ

という意味

restrict 以外にも変更箇所はあるのに、これだけ特別扱いで
言語レベルで無視というのは非合理かと

892 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:14:01.14 ]
C++からCのライブラリを使うという観点では、
restrictはライブラリ書く人が、
利用者に対して利用上の注意を求めるものだから、
無視しても実装が警告の機会を逃すくらいしかデメリットがない。
大域変数の修飾でも最適化の機会を逃すだけ。



893 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:21:01.47 ]
亀レスだが、
Objective-Cのメソッドディスパッチは
hash table引く。
メソッド名文字列からメソッドIDを生成して、
オブジェクトにsend出来る。
だから低レベルな小さいクラスライブラリ提供が無理。
そういう部分での設計はCでも行う必要があり、
OOな設計スキームを使う場合、
二種類のOO実装射影が必要になる。

894 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 17:48:44.24 ]
>>891
> restrict 以外にも変更箇所はあるのに、これだけ特別扱いで

C文法でC++11としてill-formedになるのってrestrict絡みだけだと思ってた
_Boolやら_Genericsやらはアンダーバー大文字始まりだから予約シンボルでどうにでもなるとして
他に何かあるの?

895 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:00:54.27 ]
まとめるとObjective-Cはリンゴ臭いからきもい

896 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/28(水) 20:11:50.27 ]
>>894
コンパウンドリテラルは C++11 に入らないことになってたような。

897 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:30:51.82 ]
配列の添字指定の初期化とか
構造体のメンバ指定の初期化とか
そういうのも入らない

898 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:44:41.25 ]
>配列の添字指定の初期化
それはgcc拡張ではないかい?
gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

899 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:46:14.14 ]
悪い
俺が間違い

900 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:55:36.47 ]
>>896


901 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:56:08.76 ]
>>895


>>900はミス

902 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/28(水) 20:56:14.47 ]
>>899 お前誰だよ。
ID 無しだとわかりにくいから解説しとくと >>898 の方が間違いで >>897 が正しい。



903 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 20:58:33.39 ]
俺だよ俺

904 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:01:41.28 ]
いや、オレオレ。

905 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:02:22.83 ]
俺だっつてんだろ

906 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:07:55.05 ]
え、俺わかんね???

>>897は文章どおり11の仕様には入っていないと言っている
>>898はGCC拡張だから11の仕様には入っていないと言っている

どっちも11には入らないって言ってるんじゃなく?

おまいらが何言ってるのか教えろください

907 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:16:18.28 ]
>>897はC99には入ってるけどC++11の仕様には入っていないと言っている
>>898はGCC拡張だからC99の仕様には入っていないと言っている(誤り)

908 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:19:30.83 ]
よくわかる解説ありがとう

909 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 21:55:23.61 ]
>>893
そもそもそういう用途を想定してないからな。
あくまでもモジュール理論の体現を目指したもので、
大規模コーディングを主戦場に想定してるから。

910 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 07:24:22.03 ]
配列の形で記述された引数の [ ] の中に const とか入れる文法もC++11に入らない

911 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 07:25:18.17 ]
動的にサイズを指定できる配列も入らない

入らない仕様はかなりあるのできりないな

912 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 07:41:46.40 ]
そういや複素数型ってどうなってるんだっけ?



913 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 08:01:27.83 ]
Cとの互換性だけが取り柄の言語なのに...
C++にはCの仕様を取り込むか否か
選択する権利など無いのに勘違いしちゃってるな

914 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 08:11:41.53 ]
むしろ何でrestrictを仕様に入れないんだろう
ベクトル化とかの最適を考えると困るはずなのに
C89/C++03以前のように、プラグマで対応するっていう事?

915 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 08:17:12.15 ]
まあ現実には「昔の」Cと実用レベルで互換が取れてれば構わんのだけどね
最新のCなんて最新のC++以上に使われるか怪しいわけだし

916 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 08:23:21.65 ]
構造体のメンバ指定の初期化は結構見る気がするなあ。
ヘッダファイルに現れないなら関係ないか。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<170KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef