仅将const引用绑定到const值

时间:2016-10-29 13:00:05

标签: c++ c++11 pointers reference const

我正在开发一个代码,用于在集合的元素中查找对(使用特定条件)。我真的不想复制集合的元素,所以我想我会使用指针对。但是,如果原始集合中的值可以更改,则这是不安全的。

在我的代码中,我想使用一个只引用真正常量值的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;

这也可以用引用来实现吗?

1 个答案:

答案 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
}