2008-08-18

ConceptGCCでコンパイルが通らないコード

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

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

このコードは確かにコンパイルが通らなかった。では、function templatesとは何だろう。これは関数テンプレート全般を意味するが、おそらくは(14.9.1.1.7)の、"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: