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


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

C++14/C++1y



1 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 01:00:22.34 ]
The C++ Standards Committee
www.open-std.org/JTC1/SC22/WG21/

Wikipedia
https://en.wikipedia.org/wiki/C%2B%2B14

C++11/C++1y 18
toro.2ch.net/test/read.cgi/tech/1365073520/

651 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:41:03.39 ID:nfV6YhIZ]
>>650を書いてから思ったけど、C++14ならコンパイル時乱数ってのもそれほど難しくないよなw

652 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:47:59.08 ID:81wfXhZd]
>>650
ああ、そうだ
const を使った時にエラーになるだけだった
(コンパイル時定数でないといけない所に使うと)

653 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 21:31:28.19 ID:gZyvGjeH]
>>651
コンパイルのたびに変わられてもなあw
デバッグ担当者に恨みがあるときに有用か

654 名前:デフォルトの名無しさん mailto:sage [2014/03/14(金) 00:55:48.19 ID:8ZkUtZ7A]
これは素晴らしいコード
よく覚えておこう

655 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 21:52:05.87 ID:UBk2tVSE]
江添より始めよ

ドワンゴの会長が江添に、C++プログラマを招く方法を相談したところ、
「まず自分のような優秀でない者を優遇してください。
そうすれば、もっと優れたC++プログラマが次々に集まってくるだろう」と言ったという故事から。

656 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 03:12:08.03 ID:eiPnsEPV]
ホワイトボードにくだらねえコード書かせる
面接やめりゃいいんじゃないの
あれは萎える

657 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 03:16:23.59 ID:vxKEh5eU]
なにそれ
あーここ文法エラーですねーご縁なかったですねー
みたいなことでもやってんのかい

658 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 09:19:45.88 ID:zT3d0OOi]
>>655
何かと思ったら江添氏ドワンゴニ就職してたんだな。そりゃ妬ましいですなあ。

659 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 09:54:25.98 ID:bZgbKUm9]
ドワンゴに就職してからアンチ増えた気がするね。
大抵655みたいな下らない奴なんだけど



660 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 13:52:16.85 ID:jfFivXOk]
ドワンゴとかいうブラック企業に入ったらご愁傷様としか思わん

661 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 14:05:41.36 ID:CB1HUIXp]
仮にブラックだとしても、裁量労働制でノルマもないんだから羨ましいことはあっても不憫には思えないな。

662 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 21:11:44.61 ID:aDPhdWIk]
C++14っていつ頃の予定になってんの

663 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 21:16:13.44 ID:5IXC0HIP]
14年ごろ

664 名前:デフォルトの名無しさん [2014/03/20(木) 00:18:22.53 ID:1Y22wDAD]
実際のところ皆はもう案件でC++11使ってる?
うちはまだダメだ。boostもダメ。

665 名前:デフォルトの名無しさん mailto:sage [2014/03/20(木) 22:13:56.93 ID:/M0F5d5s]
>>664
実案件はまだでしょ、自分で使うツールとかで実験的に使い始めたところ
範囲ベースの for とかめちゃ便利だわ

666 名前:デフォルトの名無しさん [2014/03/20(木) 22:58:12.94 ID:N5eLnApK]
納入とかない仕事なんでC++1yでさえ使ってる。

667 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 01:32:54.13 ID:OkOuwegv]
小規模iOSアプリで使い始めてるけど特になんの問題もない
先んじて、月単位の独自研究の成果を各自持ち寄った結果でもあるので仕事場の空気レベルで特殊な例だと思うが

668 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 01:37:21.03 ID:7xig81Eo]
>>664
2011年開始の案件以降、環境がVC2010になったからVCの機能の範囲で使いまくってる。
もうautoなしなんて考えられん。

669 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 02:57:02.70 ID:FGAg6ToC]
vs2012だからゴリゴリ使ってる
boostも使える
range based forとauto無しでは生きられん



670 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 07:26:47.86 ID:21MtAdc/]
>>669
> range based forとauto無しでは生きられん

range based for って、cbegin( ) 呼んでくれないんだけど、そう言うケースはどうしてる?
うちでは、その部分は従来の書き方してる。
すごくいい機能だけど、それだけにちょっとガッカリ感がハンパない。

671 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 07:27:35.49 ID:sDay5++M]
const auto& にすれば?

672 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 08:38:07.12 ID:FGAg6ToC]
>>670
for_each使うかconst auto&だなー

673 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 08:54:32.73 ID:VBQzVRnq]
template<typename T>
const T& const_wrap(const T& v) { return v; }

for(auto &i : const_wrap(v))

要するにconstへキャストしとけばいいんだろ?

674 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 10:11:54.32 ID:876LI0nh]
>>671
cbegin( ) 使ってくれる?
VS 2013 だとダメだったんだが

>>672
for_each ならいけるの?
いま出先だから、あとでちょっと試してみる

>>673
今んところこれが定番みたいなんだけど、無理矢理感ハンパない
for_each(const auto& i : const v) みたいな構文で使えればいいんだけどね

675 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 11:30:52.58 ID:7xig81Eo]
>>674
cbegin()を使ってくれなくてもiがconstになっていれば文句ないけどね。

676 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 12:14:37.18 ID:21MtAdc/]
>>675
v がメンバーだと const なメンバー関数で begin( ) 使うと怒られるんよ
て言うか、そのための cbegin( ) なんだが...

677 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 12:54:02.21 ID:VQJvHtSf]
>>676
あなたの使ってるコンパイラのライブラリのコンテナ群はconst付いてるbegin endが定義されてないの?

678 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 13:11:49.86 ID:7xig81Eo]
>>676
そういうときはconst付きのオーバーロードが自動的に選ばれるんじゃないの・・・
って、>>677に先に言われたか。

679 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 16:20:44.86 ID:IxwabTo/]
>>677-678
ん、ここc++14/c++1yスレですよね?



680 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 16:32:21.97 ID:7xig81Eo]
>>679
const付きのbegin(),end()はC++11でも削除されてないし、C++14で削除される予定もないよ。

681 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 16:38:34.04 ID:pRTSEoEQ]
新機能じゃないじゃん

682 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 16:51:30.57 ID:B1xV2tLh]
range based for に問題があるって話に対して、いやそれは問題じゃないよって話をしてるんだろ

683 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 17:01:19.62 ID:VQJvHtSf]
まぁrange based for自体が新機能じゃないな。

684 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 17:43:07.83 ID:aQAHkMot]
foreach みたいなものだろ

685 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 18:01:34.42 ID:xvdwrk0X]
>>677-678
え゛っ、const 付きの begin( ) にしとけば使ってくれるんか?
マジで知らんかったわ。
VS 2013 で使えるか、やってみよ。

686 名前:デフォルトの名無しさん [2014/03/21(金) 18:38:14.12 ID:lD60fRJj]
使ってくれるんか?

方言かい。関西弁としてもけったいな言い方だな。

687 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 18:39:36.89 ID:nNEE3Utq]
つこてくれるんケ?

688 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 19:01:21.39 ID:bqevYXZK]
これが方言に見える地方って・・・・

頭悪そうな文体ではあるけど

689 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 20:41:01.65 ID:PuCTRIi5]
>>688
だって土民は自分が使っている言葉が標準語
そして、それ以外すべてど方言なんですよ



690 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 20:52:49.08 ID:21MtAdc/]
>>686
> 方言かい。関西弁としてもけったいな言い方だな。

気色悪い関西弁やめてんか

691 名前:デフォルトの名無しさん [2014/03/21(金) 20:56:25.66 ID:lD60fRJj]
begin( ) にしとけば使ってくれるんか?

あのな、主語が何なのか聞いてるんだけど。それとも「使えるんか?」
を「使ってくれるんか?」と言うのかい。

まあ、言葉の使い方おかしいんじゃないかと言ってるのに

おい、>>689。お前は自分では何にも言えないくせに、後ろ
からキャンキャン吠えている女みてえな糞野郎だ。

692 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:14:19.42 ID:PuCTRIi5]
>>690
それがそいつの標準語だよ。基地土民のね

693 名前:デフォルトの名無しさん [2014/03/21(金) 21:15:25.97 ID:lD60fRJj]
はいはい、弱い犬ちゃんw

694 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:18:56.71 ID:PuCTRIi5]
土民は
>方言かい。関西弁としてもけったいな言い方だな。
で、主語が何なのか聞いていたのか? 土民じゃないと土民標準語理解できないからな

695 名前:デフォルトの名無しさん [2014/03/21(金) 21:19:33.78 ID:lD60fRJj]
もう、馬鹿はほっとこ。じゃあね

696 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:40:53.28 ID:o/AML2E/]
>>685
この流れの所為で
> const 付きの begin( ) にしとけば
がツッコまれていない件について

begin()にconstつけないだろ

697 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:51:39.48 ID:sDay5++M]
ttp://msdn.microsoft.com/ja-jp/library/1sc2e041.aspx
ついてるけど何が言いたいんだ

698 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:59:08.90 ID:o/AML2E/]
>>697
いや使うときに

699 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 22:28:38.75 ID:21MtAdc/]
>>698
意味わからん
どっから使う時なんて発想が出てきたんだ?



700 名前:デフォルトの名無しさん [2014/03/21(金) 22:36:41.76 ID:yZ2dHoTg]
constありのbeginの戻り値をconst_iteratorにして、constなしのbeginの戻り値をただのiteratorにして、
beginは両方多重定義しておけばいいじゃん。使うときは
インスタンスがconst付きかどうかで自動的に選択されるじゃん。

701 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 22:48:25.31 ID:i1lS1iqd]
>>698
イミフ

702 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 23:15:08.50 ID:PuCTRIi5]
今度はじゃんか。ニダよりは良いよね

703 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 11:59:46.75 ID:w77uEg4K]
>>680
それはそうだけど>>674をエスパーすると
c++11で追加された型推論ではautoにconst付けないと
constのbeginが呼ばれないって話でしょ
完全にautoを無視した話してたからいつの時代の話してるんだと思っただけ

704 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 12:22:44.80 ID:ZdExmIEg]
for (const auto &i : v) と書けばいいよ、といえばすむ話だったのか。

705 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 12:59:52.50 ID:ZPzngx0K]
それでは済まないしautoも関係ない話だと思ってたが
そう考えてたやつもいるんだな

706 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 16:29:25.17 ID:eq/IxRl7]
>autoにconst付けないと
>constのbeginが呼ばれない

まるで、constを付けるとauto begin()const->const_iterator
が呼ばれるかのような発言だな。

707 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 16:39:36.81 ID:HJ0+n2Jk]
constで受けてもbegin()constの方が呼ばれないのは解ってんだけどそれが問題になるのどんなとき?
上の方でそれで済まないとか書いてあるからさ。

708 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 16:41:53.88 ID:j1DZjBUB]
もしかして自作コンテナで cbegin に別な意味を持たせてる?

709 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 18:44:56.14 ID:7xC9kwdc]
自作コンテナで非constのbegin()およびそのイテレータの
デリファレンスにコストのかかる処理があるときは問題となる



710 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 19:32:15.59 ID:ZdExmIEg]
const付きbeginとcbeginの処理が異なっているなんて規格上許されるのか?

711 名前:710 mailto:sage [2014/03/22(土) 19:32:49.47 ID:ZdExmIEg]
ああすまん、自作コンテナの話か。

712 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 19:49:09.81 ID:HJ0+n2Jk]
自作コンテナの話の方はbeginのconst付きと付いてないの実装の差異だと思うけど。

ただあんまりそんな実装しないよね。
パッと思いつくのrwlockでconst付きはrlock、const無しはwlock するようなコンテナとか?
でもconst有りと無しで問題になる程パフォーマンス変わるようなコンテナは逆に使いづらいと思うのよね。

713 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 22:37:22.96 ID:j1DZjBUB]
>>709
そういう問題の解決をcbeginに求めようとしているのだな?
不適切なやり方なのかもしれないし、そうでないかもしれない。

714 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 06:39:41.19 ID:Ci/6MbS/]
文盲が多いな
constと非constの違いの話だと思うのだけれど
どうしてcbeginとbeginの違いの話だと妄想したがるのか

715 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 10:39:09.00 ID:buFfa6rW]
>>714
そもそもは>>670から始まってるから

716 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 10:56:12.39 ID:J+Rs1swr]
混乱するから誰かまとめて

717 名前:デフォルトの名無しさん [2014/03/23(日) 11:36:21.59 ID:sV6DQ8Cb]
template <class T1, class T2>
auto operator + (T1 x, T2 y) -> decltype(x+y)
{
return x+y;
}

上のところで、
error: template instantiation depth exceeds maximum of 900・・・
recursively required by substitution of 'template<class T1, class T2> decltype ((x + y)) operator+(T1, T2) [with T1 = std::complex<double>; T2 = double]

みたいなエラーがでます(gcc4.8.1)。これって、decltype(x+y)のところで、operator+が再帰的に呼ばれているということですか?

718 名前:片山博文MZジェバンニ ◆T6xkBnTXz7B0 mailto:sage [2014/03/23(日) 11:39:47.07 ID:FjLlR1KU]
>>717
それってそもそも必要なの?

719 名前:デフォルトの名無しさん [2014/03/23(日) 11:46:12.34 ID:sV6DQ8Cb]
まあ、auto, decltypeの練習で試しにやってみたんですけど。



720 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 12:06:50.29 ID:E9zZ+v+U]
再帰だろうね

721 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:34:05.08 ID:+klle/r1]
演算子+(T1 x,T2 y)の返値の型は
演算子+(T1 x,T2 y)の返値の型と定義しているようなものなのでは

722 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:55:55.41 ID:wql3g0E+]
C++1yならそもそも -> から先要らないよね

723 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 15:32:38.95 ID:9EUDVluQ]
下請けに丸投げ

724 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 16:37:18.36 ID:FjLlR1KU]
下請けに投げたと思ったら、自分の会社に投げていたでござる

725 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 16:42:36.55 ID:wDKVi9AQ]
decltype以前に無限再帰じゃん
コンパイル時に見つかるだけいいんじゃね

template <class T1, class T2>
auto operator + (T1 x, T2 y) -> decltype(auto)
{
return y ? (++x)+(--y) : x;
}

726 名前:デフォルトの名無しさん [2014/03/23(日) 21:55:13.61 ID:sV6DQ8Cb]
#include <complex>
...
complex<double> z(0,1);
cout<<1+z<<endl;
をコンパイルすると「複素数と整数の演算+は定義されていない」旨のエラーがでます。ところが
template <class T>
struct double_trait {
typedef T type;
};
template <class T>
using Dtype=typename double_trait<T>::type;

template <class T>
std::complex<T> operator + (Dtype<T> c, const std::complex<T>& z)
{
return c+z;
}
をmain()関数の前に定義すると、今度はビルド実行できます。わからないのはintの場合の特殊化
をしてないのになぜビルド実行できるかです。

※complex<double>とintの単純な演算子オーバーロードを使わなかったのは
オペランドがchar, unsignedなどの場合にも対応させるためです。それと
int iとcomplex<double> zに対して単純にreturn i+z;とするとなぜか実行時
エラーが出ます(TDM gcc4.8.1)。

727 名前:デフォルトの名無しさん [2014/03/23(日) 22:06:19.15 ID:sV6DQ8Cb]
あ・・・ operator+の定義内でreturn i+z; とやるとまた再帰的にw

728 名前:デフォルトの名無しさん [2014/03/23(日) 22:56:26.24 ID:sV6DQ8Cb]
あ・・・。

template <class T>
std::complex<T> operator + (Dtype<T> c, const std::complex<T>& z)

は実体化される時に

std::complex<double> operator + (double c, const std::complex<double>& z)

となり、intやchar型の実パラメータが渡されるときに暗黙の型変換が適用されるのか?

template <class T>
std::complex<T> operator + (T c, const std::complex<T>& z)

でもokでした。traitsは関係なしと。お騒がせしました。
今日はもう寝ます。

729 名前:デフォルトの名無しさん [2014/03/23(日) 23:05:46.93 ID:sV6DQ8Cb]
あれえ?もう一回やったらokじゃない。小保方さんのSTAP細胞みたいに
なっちまった。寝る。



730 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 23:17:30.67 ID:k+FbO2rG]
>>729
お疲れ様。
俺も寝よう。おやすみ。

731 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 23:27:25.54 ID:oWIQ1yda]
C++11でもOKって、C+1yで使えるならCの質問でもOKスレってことだよね

732 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 23:50:33.19 ID:8OD1stAu]
そういやC11スレって無いな

733 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 23:53:52.09 ID:Cwtmew+7]
そもそも環境あるのか?

734 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 02:55:24.26 ID:zheSyNc8]
スマホとMac

735 名前:デフォルトの名無しさん [2014/03/24(月) 22:27:29.45 ID:uHELE/QG]
VC++2013を未だインストールしてないので、次のコード動くか確かめてもらえないでしょうか?

#include "stdafx.h"

template <class T>
struct double_trait {
typedef T type;
};

template <class T>
using dtype=typename double_trait<T>::type;

template <class T>
std::complex<T> operator + (dtype<T> c, const std::complex<T>& z) //@
{
return c+z;
}

int main()
{
using namespace std;

complex<double> z(0,1);
char c=-1;
cout<<c+z<<endl;

cin.get();
return 0;
}

736 名前:デフォルトの名無しさん [2014/03/24(月) 22:46:48.96 ID:uHELE/QG]
あ・・・。stdafx.hの中に次の2行が必要です。
#include <iostream>
#include <complex>

>>735の@の引数を直接double cにすると、「多重定義であいまい(ambiguous)」のエラーが出て
しまいます。floatにするとコンパイルエラーは出ませんが、無限再帰に陥るのか実行時エラー
が出ます。dtype<T> c の場合は、T=doubleなので実質dtype<T>=doubleとなるのになのに、
コンパイラはエラーを出さません。また、正常に実行されます。どうも、コンパイラを欺く
トリックではないかと。

※ 1.0+zと書けばすむ話ですが、数学の教科書では普通にz+1とか、1+zとか書きますよね。
しかし、プログラムでうっかりz+1と書いてしまうと、分けのわからないエラーがベラベラと
出てきて初心者はとまどいます。それで、>>735 みたいな手の込んだことをするわけです。
でも、複素数と整数の混合演算を簡単にできる方法ないですかね。

737 名前:デフォルトの名無しさん [2014/03/24(月) 22:48:12.05 ID:uHELE/QG]
T=doubleなので実質dtype<T>=doubleとなるのになのに、コンパイラはエラーを出さません。

T=doubleなので実質dtype<T>=doubleとなるのに、コンパイラはエラーを出しません。

738 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 22:52:52.12 ID:JglQ1MVO]
>次のコード動くか確かめてもらえないでしょうか
おまえ御命令だ。やれよ

739 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 23:30:50.09 ID:f/NUMeag]
もはやただのテンプレートの話で11,14関係ないだろ

でもひとついっとくとすでに標準に
template<class T> complex<T> operator+(const complex<T>&, const T&);
template<class T> complex<T> operator+(const T&, const complex<T>&);
はあるから
> >>735の@の引数を直接double cにすると、「多重定義であいまい(ambiguous)」のエラーが出て
> しまいます。
はそのせいだろ



740 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 23:47:28.16 ID:6M4RZ6kU]
オンラインコンパイラサービスは色々あるからそれを試すのが良いよ
GCC:melpon.org/wandbox/permlink/gCuQdogNabmJhVeF
Clang:melpon.org/wandbox/permlink/FkystRrbxJlhHwvf

結論としては、dtype<T>は関係無い。dtype<T>はdouble_trait<T>::typeに展開されるのでTはnon-deduced context、よってここでは推論の対象とならない。
けれども、第二引数のcomplex<T>のTはdeduced contextで推論される。結局Tはcomplexのテンプレート引数に推論されてオーバーロード候補としてマッチする。
参考:melpon.org/wandbox/permlink/CYnRbBgzf2gL4vGL
ここも参考になるかも(英語)
stackoverflow.com/questions/8775202/how-do-template-aliases-affect-template-parameter-deduction

741 名前:デフォルトの名無しさん mailto:sage [2014/03/25(火) 00:57:00.26 ID:rAz4buIA]
>>739-740
俺には?だが、原因が分かるってレベル高いんだな
g++にはdemangleする関数あるのか、メモメモ(AA略)

742 名前:デフォルトの名無しさん [2014/03/25(火) 01:03:54.21 ID:dLACqsrm]
>>740

ありがとうございます。

私は、多重定義のチェックと実体化のタイミングの問題かな?と考えました。
となると、コンパイルによってはダメかもしれないと考え、VC++ではどうなるんだろ?
と思った次第です。

>dtype<T>は関係無い。

そうですか。私は「double_trait<T>::typeで包むことによってコンパイラ
の多重定義のチェックから逃れているが、最終的にはdouble型の引数を
もった関数が実体化され、実パラメータがcharやintの時に暗黙の型変換
が働いている。」と解釈していました。

この考えは間違いですかね。

743 名前:デフォルトの名無しさん [2014/03/25(火) 01:08:25.46 ID:dLACqsrm]
解釈していました。

>>740 さんを読んで解釈しました。

744 名前:デフォルトの名無しさん mailto:sage [2014/03/25(火) 02:59:03.84 ID:cgyBljYJ]
で、どの辺がC++14なの?
現行規格の質問は現行規格スレでやれ

745 名前:デフォルトの名無しさん [2014/03/25(火) 09:56:38.99 ID:aIELEUmN]
ああ、C+11/C++14じゃなかったんですね。失礼しました。

746 名前:デフォルトの名無しさん mailto:sage [2014/03/25(火) 18:38:12.70 ID:ktix9ZhM]
C+11ってC++11とC11のどっちだ

747 名前:デフォルトの名無しさん mailto:sage [2014/03/25(火) 22:03:54.20 ID:DjVofhuk]
C+11 = C+1一 = C++ = C++

748 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 00:25:37.22 ID:BPRBwKR1]
>>740
そのmelponてとこで手持ちのコードを走らせてみたらclang 3.4では通るもののgcc 4.8.1ではコンパイルエラー。
念のためideone(gcc 4.8.1になってる)でやってみるとコンパイル成功して実行もできる。
vc(2010, 2013)でも問題なし。
なんか変だな???

749 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 19:10:33.17 ID:ysWuWvgs]
>>748
呼称はwandboxがよいと思う
ソースによるけど新しい機能についてはコンパイラにバグがある可能性もある、またはオプションの関係とかも
詳しいところは実際のソースを見なければわからない



750 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 19:56:25.59 ID:9PLgomQW]
>>749
ソースすら出さないであーだこーだって、独り言(俺日記)カキコしてもって感じだよね

751 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 20:40:31.98 ID:BPRBwKR1]
>>750
そう言われてもね。
ソース垂れ流しても迷惑だし、ちゃんとポイントを絞って提示するのは難しい。






[ 続きを読む ] / [ 携帯版 ]

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

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