ConceptGCCの説明には、"Associated templates and function templates are not implemented." と書いてある。Associated templatesとは(に書いてある。associated class templatesのことであろうか。つまり、(に、"An associated class template specifies a class template in a concept." と書いてるように、以下のようになる。

auto concept UseAssociatedClassTemplates< typename T >
    template < typename U > class X ;

このコードは確かにコンパイルが通らなかった。では、function templatesとは何だろう。これは関数テンプレート全般を意味するが、おそらくは(の、"Associated functions may specify requirements for function templates and member function templates."のことであろう。

auto concept UseFunctionTemplateAndMemberFunctionTemplate < typename T >
    // for function templates
    template < typename U >
    void f(T, U) ;
    // and member function templates
    template < typename Iterator >
    T::T(Iterator first, Iterator last) ;

このコードをコンパイルすると、どうもfunction templatesに関するパースは実装されているようで、"note: this feature is currently unsupported, but will be in a future version" と出力される。ただし、member function templatesに関しては、まだパースもできないようだ。

No comments: