带有模板的头文件中的“未在范围中声明”错误

时间:2012-07-01 23:24:34

标签: c++ templates namespaces compiler-errors boost-function

因此,我创建了一个包含以下内容的头文件:

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>仍然无效。

有什么想法吗?

1 个答案:

答案 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;
}
}