ConceptGCCでは、以下のコードがコンパイルできない。
auto concept Addable<typename T, typename U = T>
{
typename result_type;
result_type operator+(T, U);
}
何故だろう。ひょっとしたら、Associated typeはメンバ関数にしか使えないのかもと思ったが、現行のドラフト規格には、
Associated functions describe functions, member functions, or operators (including templates thereof)(14.9.1.1.1)
An associated type specifies a type in a concept body. Associated types are typically used to express the parameter and return types of associated functions.(14.9.1.2.2)
とあるので、Associated functionに使えることになる。そしてAssociated functionはメンバ関数限定ではない。どうなっているのだろう。
追記、後で試したらコンパイルできた。どこか文法間違いでもあったのだろうか。
No comments:
Post a Comment