我在gf192.hpp
中有一个函数定义如下:
template<mp_size_t n>
static constexpr bigint<n> field_char() { return bigint<n>(2); }
在类gf192
中,该类本身没有模板参数。 bigint
是带有模板参数的自定义类。然后,我尝试在test_all_fields.cpp
中调用此函数:
template<typename FieldT>
void test_binary_field()
{
// ...
const bigint<1> characteristic = FieldT::field_char<1>();
EXPECT_EQ(characteristic, bigint<1>(2));
}
但是,它具有以下编译错误:
/Users/.../test_all_fields.cpp:273:46: fatal error:
missing 'template' keyword prior to dependent template name 'field_char'
const bigint<1> characteristic = FieldT::field_char<1>();
^ ~~~
我通过更改代码来解决此问题:
template<typename FieldT>
void test_binary_field()
{
// ...
const bigint<1> characteristic = FieldT::template field_char<1>();
EXPECT_EQ(characteristic, bigint<1>(2));
}
但是我想知道为什么会这样。之前调用模板函数时,我从来不需要指定template
。