2014-11-post-Urbanaのレビュー: N4260-N4269
どうも欠番が多い。
N4261: Proposed resolution for Core Issue 330: Qualification conversions and pointers to arrays of pointers
多次元ポインターでconstを付け加える型変換について規定する文面がないため、以下のコードが違法になってしまう問題を修正する提案
int main()
{
double *array2D[2][3];
double * (*array2DPtr1)[3] = array2D; // 合法
double * const (*array2DPtr2)[3] = array2DPtr1; // 合法
double const * const (*array2DPtr3)[3] = array2DPtr2; // 違法
}
規格の文面上にこの例についてカバーする箇所がないため、このようなことになってしまっている。
N4262: Wording for Forwarding References
テンプレート仮引数Tで実引数T &&や、auto &&は、どんな型でも受け取ることができる。この性質に対して、Fowarding Referenceという名前を付ける提案の文面案。
N4263: Toward a concept-enabled standard library
Concept Lite TSがほぼ完成したので、さっそく標準ライブラリをConceptに対応させたい。その対応させる際の方針を示した論文。
多少の非互換性は許容する方針らしい。たとえば、暗黙の型変換とか。
N4265: Transactional Memory Support for C++: Wording (revision 3)
トランザクショナルメモリーの文面案
この前のC++WG JPの会議では、現在提案中のトランザクショナルメモリーは、ハードウェアネイティブのトランザクショナルメモリーに落とし込める設計ではないので、何を考えて設計したのかよくわからない。全然実用的ではないという意見であった。
N4266: Attributes for namespaces and enumerators
名前空間とenumeratorにattributeを指定できる文法を追加する提案。これまでは文法が規定されていなかったので、deprecatedを指定できなかった。
namespace [[deprecated("lib_v1 is deprecated. Use lib_v2 instead.")]] lib_v1 { }
enum struct Option { safe, fast, super_fast, dangerously_fast [[deprecated("It has issues. Don't use it")]] } ;
N4267: Adding u8 character literals
charのオブジェクトひとつで表現できる文字に限ったUTF-8文字リテラルを追加する提案の文面案。
用途としては、ASCII文字をリテラルで表現できる。
char c = u8"c" ;
N4268: Allow constant evaluation for all non-type template arguments
非型テンプレート仮引数に配列からポインターへの型変換や関数からポインターへの型変換などを許容する提案の文面案
今回は欠番が多い。N4269のタイトルは、「まともなコンパイラーはatomicを最適化しない」というもので、興味深いのだが、欠番となっている。
ドワンゴ広告
この記事はドワンゴ勤務中に書かれた。
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0