我想知道,有没有办法强制调用非模板函数,如:
template <class T>
void foo(T&);
void foo(const int&);
void bar()
{
int a;
foo(a); // templated version is called, not a usual function
}
Run Code Online (Sandbox Code Playgroud)
你可能会这样做
foo(const_cast<const int&>(a));
Run Code Online (Sandbox Code Playgroud)
要么
foo(static_cast<const int&>(a));
Run Code Online (Sandbox Code Playgroud)
或通过中间变量
const int& crefa = a;
foo(crefa);
Run Code Online (Sandbox Code Playgroud)
或包装:
foo(std::cref(a));
Run Code Online (Sandbox Code Playgroud)
或者指定foo:
static_cast<void(&)(const int&)>(foo)(a);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |