我遇到的问题基本上可以通过下面的代码来解释:
void (*fn_ptr)();
template<typename T> void Second(){
//do something
}
template<typename T> void First() {
//do init
fn_ptr = Second<T>;
}
函数First和函数Second都需要template function并且只能通过函数指针调用fn_ptr。函数First必须在调用函数之前调用一次Second。您不需要手动调用函数 Second。所以我们之前唯一应该做的fun_ptr就是在某处使用:
fn_ptr = First<SomeType>;
问题来了:我怎样才能阻止人们这样做:
fn_ptr = Second<SomeType>;
ps:我知道functionFirst和functionSecond都没有的时候怎么办template function