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:
Post a Comment