2017-07-01から1ヶ月間の記事一覧
プログラミング言語C++において、可変長引数テンプレートのテンプレート・パラメータパック(template parameter pack)は、関数テンプレートに対する明示的なテンプレート実引数指定では完全に特殊化できない(パターンがある)。本記事の内容はStack Overflo…
C++1z(C++17)で追加される fallthrough属性 の利用に関する注意点について。下記コードの★部ではフォールスルー(fallthrough)明示を意図しているが、C++コンパイラはプログラマの期待通り振舞わない。これは末尾セミコロン(;)を忘れたことで、fallthrough属…
C++標準ライブラリの文字列型std::stringと、リスト初期化(list initialization)の組み合わせによる落とし穴。2個の文字列リテラルによるstd::stringのリスト初期化は、ほとんどのC++処理系においてコンパイル時には問題検知されないが*1、実行時に未定義動…
プログラミング言語Javaにおける条件演算子(conditional operator) ?: と、子クラスから親クラスへの型推論(の一部)に関してメモ。条件演算子の第2, 3項目に親クラスParentから派生した子クラスChild1, Child2を指定した場合、Javaでは部分式 (b ? c1 : c2…
プログラミング言語C++における条件演算子(conditional operator) ?: と、子クラスから親クラスへの型推論に関してメモ。条件演算子の第2, 3項目に親クラスParentから派生した子クラスChild1, Child2を指定した場合、C++では型推論に失敗してコンパイルエラ…
プログラミング言語C#における条件演算子(conditional operator) ?: と、子クラスから親クラスへの型推論に関してメモ。条件演算子の第2, 3項目に親クラスParentから派生した子クラスChild1, Child2を指定した場合、C#では型推論に失敗してコンパイルエラー…