0
非型テンプレートパラメータをテンプレートクラスに関数テンプレートを特化:私は今、関数テンプレートvalidateType()C++ - 私はクラステンプレートはFoo持っ
template <class T>
bool validateType() {
return false;
}
を持って
template <class A, A value, class B>
class Foo {};
とをI関数がコンパイル時にいくつかのstatic_assertsを実行するように、Fooを含むいくつかの型に対して特殊化したいとします。私はこれを試してみました:
template <class A, class B, Foo<A, A val, B>>
bool validateType() {
// do some static asserts
}
と、この:最初の一
template <class A, A val, class B>
bool validateType<Foo<A, val, B>>() {
// do some static asserts
}
、コンパイラは言う:
error: wrong number of template arguments (2, should be 3)
template <class A, class B, Foo<A, A val, B>>
^~
note: provided for ‘template<class A, A value, class B> class Foo’
class Foo {};
^~~
error: two or more data types in declaration of ‘validateType’
bool validateType() {
^
error: expected ‘>’ before ‘{’ token
bool validateType() {
^
第2の場合には、私は
error: non-class, non-variable partial specialization ‘validateType<Foo<A, val, B> >’ is not allowed
bool validateType<Foo<A, val, B>>() {
^
を取得します
これはどのように行うべきですか?