Implementation propagation_const in prio C++17 version

46 views Asked by At

It is the following example

#include <iostream>
#include <memory>

class B{

    public:
    void foo() const{
        std::cout << "foo const" << std::endl;
    }
    void foo() {
        std::cout << "foo non-const" << std::endl;
    }
};
class A{

    public:
    void bar() const{
        std::cout << "bar const" << std::endl;
        b_->foo();
    }
    void bar() {
        std::cout << "bar non-const" << std::endl;
        b_->foo();
    }
    std::shared_ptr<B> b_{std::make_shared<B>()};
};

int main(){
    A const a;
    a.bar();
}

Based on standard correctly the const is not propagated and foo non-const is called. My question how to implement propagation_const in version before C++17?

0

There are 0 answers