示例代码取自:http ://en.cppreference.com/w/cpp/types/add_cv (我稍作修改。)
struct foo
{
void m() { std::cout << "Non-cv\n"; }
void m() const { std::cout << "Const\n"; }
};
template<class T>
void call_m()
{
T().m();
}
int main()
{
call_m<foo>();
call_m<const foo>(); //here
}
输出是:
Non-cv
Non-cv
在第二次调用中,T
是 const 合格T()
的,所以应该调用 const 版本,对吗?还是我错过了一些特殊规则?