因此,我创建了一个包含以下内容的头文件:
namespace A
{
template<int a>
void foo(...)
{
//This throws a "test was not declared in this scope" error:
boost::function< bool (int, int)> t = test<a>;
}
template<int a>
bool test(int c, int d)
{
//Do stuff;
}
}
但是,编译时会抛出错误,我不知道为什么。测试显然在范围内。
用test<a>
或boost:ref(test<a>)
替换&test<a>
仍然无效。
有什么想法吗?
答案 0 :(得分:3)
在使用之前,您需要至少声明。编译器在此之前不知道它实际存在。
namespace A
{
template<int a>
bool test(int c, int d);
template<int a>
void foo(...)
{
//This throws a "test was not declared in this scope" error:
boost::function< bool (int, int)> t = test<a>;
}
template<int a>
bool test(int c, int d)
{
//Do stuff;
}
}