トップページ > プログラム > 2015年01月25日 > ETJbvR7U

書き込み順位&時間帯一覧

5 位/197 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000201010100000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part115 [転載禁止]©2ch.net
Visual Studio 2013 SP6©2ch.net

書き込みレス一覧

C++相談室 part115 [転載禁止]©2ch.net
649 :デフォルトの名無しさん[sage]:2015/01/25(日) 10:22:42.68 ID:ETJbvR7U
テンプレート引数で値を受け取る場合に、文字列リテラルと文字列配列を区別する方法はありますか?
template < size_t N > void foo(const char (&s)[N])
とすれば文字列へのポインタと配列を区別することはできたのですが、リテラルと区別する方法が欲しいです。
Visual Studio 2013 SP6©2ch.net
753 :デフォルトの名無しさん[sage]:2015/01/25(日) 10:56:34.82 ID:ETJbvR7U
え?VS2013Com使えば出来るよ
C++相談室 part115 [転載禁止]©2ch.net
656 :デフォルトの名無しさん[sage]:2015/01/25(日) 12:24:13.51 ID:ETJbvR7U
>>650
直接リテラルを指定した場合のみを区別したいです。 foo("abc")

マクロを使えば、リテラルの連結を利用して使い方のミスだけは回避できる、
#define foo(literal) foo_impl("" literal)
という方法があるようなのですが、テンプレートとオーバーロードでできないでしょうか?
C++相談室 part115 [転載禁止]©2ch.net
659 :デフォルトの名無しさん[sage]:2015/01/25(日) 14:47:27.34 ID:ETJbvR7U
>>658
ありがとうございます。 難しそうですね。
もしかするとconstexprで何かできるかもしれないので、対応したコンパイラが手に入ったらまた試してみます。
C++相談室 part115 [転載禁止]©2ch.net
662 :デフォルトの名無しさん[sage]:2015/01/25(日) 16:12:10.04 ID:ETJbvR7U
>>661
元々の目的は「プログラム終了まで寿命を持っており、変更されない文字列だけを特別扱いしたい」ということでした。
リテラルなら十分条件だと思ったのですが、もし別の方向で実現可能ならば全く問題ないです。
ただ、「それ専用の名前」を関数やマクロにつけるのではなく、
他の文字列用の関数との使い分けを意識せずにオーバーロードさせたいです。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。