在C++ 11之前,我经常需要实现两个非常相似的方法变体来处理类/结构的常量和非常量使用场景:
struct my_struct_t{
....
float_t& at( uint32_t row, uint32_t col)
{
return *(((float_t*)((uint8_t*)numbers+row*row_stride)) + col);
}
float_t const& at( uint32_t row, uint32_t col) const
{
return *(((float_t*)((uint8_t*)numbers+row*row_stride)) + col);
}
};这一点在C++ 11中有变化吗?
发布于 2012-10-22 14:17:45
我不认为有必要摆脱“不实现2个变体”。
顺便说一句,如果需要的话,还有第三和第四种变体:
float_t& at( uint32_t row, uint32_t col) volatile;
float_t& at( uint32_t row, uint32_t col) const volatile;[注:无关,但在C++11中,可以使用noexcept关键字添加所有变体,以获取异常相关信息:
float_t& at( uint32_t row, uint32_t col) noexcept;]
https://stackoverflow.com/questions/13005717
复制相似问题