小编Lar*_*een的帖子

为什么模板参数会丢失常量?

我认为这是一个非常基本的问题,但我找不到类似的东西.

以下代码无法编译(C3668)

struct Param
{
    int a;
    int b;
};

template <typename T>
struct Foo
{
    virtual void doStuff (const T) const = 0;
};

struct Bar : public Foo<Param&>
{
    void doStuff (const Param &) const override
    {
        /*...*/
    }
};
Run Code Online (Sandbox Code Playgroud)

它将在删除const后编译

void doStuff (const Param &)
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我希望const Param& in Foo::doStuff通过我的界面声明强制执行.相反它似乎被删除了.

c++ templates interface

6
推荐指数
1
解决办法
140
查看次数

标签 统计

c++ ×1

interface ×1

templates ×1