我正在开发一个代码,用于在集合的元素中查找对(使用特定条件)。我真的不想复制集合的元素,所以我想我会使用指针对。但是,如果原始集合中的值可以更改,则这是不安全的。
在我的代码中,我想使用一个只引用真正常量值的const引用(因为我不想让用户滥用这些对)。然而,这种方法:
using PairCollectionType =
std::vector<std::pair<std::shared_ptr<Cluster>, std::shared_ptr<Cluster>>>;
PairCollectionType getClusterPairCollection(
const std::vector<Cluster> const& clusterCollection)
{
// ...
}
- &GT;结果是“重复'const'”的错误。我知道这可以用指针来实现:
const ptr_type* const ptrThatBindsOnlyToConsts;
这也可以用引用来实现吗?
答案 0 :(得分:3)
我不确定你需要这样做的理由。但是,如果调用者传递非const参数,则可以通过添加重载来捕获这些情况,从而给出编译错误:
void func(U const &)
{
// the real code
}
void func(U &) = delete;
void func(U&&) = delete;
int main()
{
U u;
U const cu {};
func(cu); // OK
func(u); // error
func(U{}); // error
}