小编ana*_*ect的帖子

const成员函数中模板成员的常量

如何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成员函数.

c++ templates const function member

5
推荐指数
1
解决办法
193
查看次数

标签 统计

c++ ×1

const ×1

function ×1

member ×1

templates ×1