如果我有:如何禁用模板如果沒有提供模板參數?
template< typename T >
foo(T bar)
{
// do stuff.
}
如何從使用禁用模板,如果有人寫
int bar;
foo(bar)?
讓我解釋遠一點:
template< typename T, typename Y > inline void
destroy(T &t, Y &y)
{
}
template< typename T, typename Y > inline void
destroy(T &t, Y &&y)
{
}
template< typename T > inline void
destroy(T &t, unsigned long int &y)
{
}
如果鍵入
destroy< unsigned long int >(something, 10)
它調用
template< typename T, typename Y > inline void
destroy(T &t, Y &&y)
你是什麼意思「禁用」?如不使用角括號語法?這是類型扣除和正常工作。編譯器將'foo(100)'與'foo(100)'相同。 –
你想迫使人們明確地說foo(酒吧)而不是它的參數暗示? –
falstro
@WilliamCustode應該指出的是,這隻適用於* functions *,如果foo是一個'template class foo'的構造函數,那麼你的SOL。 –
IdeaHat