N3576: SG8 Concepts Teleconference Minutes
Concept Liteに関する会議の内容がまとめられている。内容はConcept Liteとgeneric lambdaだ。
Concept Lite(軽量コンセプト)とは、C++11に入るはずだったconceptの機能のうち、利用側の型チェック機能だけを提供する機能のことだ。いつ入るかはまだ未定だが、ひょっとしたらC++14に入るかもしれない。その概要は以前解説した。
この案はなかなかいいように思う。従来のFull conceptは、conceptとテンプレート側と利用側両方の型チェックと、concept Mapに加えて、テンプレート自体を、constrained template(コンセプト機能が使える新テンプレート)とunconstrained template(コンセプト機能が使えない旧テンプレート)の二つに分断してしまっていた。しかも、新テンプレートの方は、旧テンプレートに比べて文法が制限される(依存型のデータメンバーは使えない)。しかも、その制限の言い訳を、「優れた汎用化のためには仕方のないことだ」という一言で済ませていた。
軽量コンセプトにはテンプレートの分断がなく、しかもテンプレートの利用側のチェックだけを行う、非常に軽いものになっている。
しかし、これを採用して、のちに完全コンセプトを導入できるのだろうか。is_valid_type/exprはどうよ。そもそもいつ規格に入れるんだよ? C++14か? C++17か? TSか? などといったことが議論されている。
No comments:
Post a Comment