如何const应用于const成员函数中的模板成员?我发现以下内容很有趣(这是在VS15中):
class TcpSocket;
class TcpThread
{
TcpSocket* Listener() const;
std::vector< TcpSocket* > sockets_;
};
TcpSocket* TcpThread::Listener() const
{
auto s = sockets_.front();
return s;
}
Run Code Online (Sandbox Code Playgroud)
我补充auto说明了发生了什么.它被推断为TcpSocket*,因此选择了非const版本front.但是,如果我插入
sockets_.erase(sockets_.begin());
Run Code Online (Sandbox Code Playgroud)
作为第一行代码,就无法编译,本质上说,sockets_是const.
这是有道理的,它为它的工作,但显然比单纯"对待每一个成员作为这里发生了const一个const成员函数.