为什么编译器不能在具有相同名称/参数的静态成员函数和普通成员函数之间进行区分

时间:2018-03-23 20:31:00

标签: c++

现在我知道为什么它不会起作用,如果差异是返回类型,但我真的不明白为什么下面的函数会是ambiguos:

template<typename... Args>
static void addTo(const Entity &en, Args...args){
//something
}
and
    template<typename... Args>
void addTo(const Entity &en, Args...args)

现在请在后台解释它的工作方式,因为我似乎对这些东西的工作原理不太了解。在我看来它应该起作用:

两个函数的调用方式不同(不同的运算符,一个运行类名本身,一个运行实例)

~~我的猜猜~~

现在这只是猜测,但它似乎是唯一合乎逻辑的解释,所以请耐心等待。 所以据我所知,每个成员函数都扩展为完全限定名称(我希望它的名称是什么)。因此,这两个函数都扩展为Class :: addTo,这导致编译器无法区分它们。

~~给了什么?~~

我真的不知道为什么这不起作用。在设计方面(为什么不应该这样做)和技术方面(除了我上面的猜测)。

0 个答案:

没有答案