0

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

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>

有任何想法吗?

4

1 回答 1

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;
}
}
于 2012-07-01T23:26:44.483 回答