gpt4 book ai didi

c++ - 为不同命名空间中的类专门化模板函数

转载 作者:行者123 更新时间:2023-11-28 05:44:02 28 4
gpt4 key购买 nike

class A{}
class B{}

namespace Other{

class C {}
class D {}

}

template<typename T> T func() {}
template<typename T> T func <Other::T>() {}

为什么不能为依赖于不同命名空间中的类型的函数提供专门的版本?所以基本上我想要的是 Other 中所有类型的 func 版本和任何其他类型的另一个版本。我是 TMP 编程的新手,如果这个问题对某些人来说似乎微不足道,我很抱歉 :)

最佳答案

Why is it not possible to have specialized version for functions dependant on types in different namespaces?

因为 C++ 中不存在表示这种特殊化的语法。

你的下一个问题可能是为什么这样的东西不存在。我不是 Stroustrup,也不是委员会,甚至不是委员会成员,所以我只能猜测。我的猜测是,最初从未考虑过这样的事情,但如果考虑过,那么它只是被认为是一个糟糕的设计决策。

指定这种特化在某些情况下的行为方式也很重要。考虑以下示例:

namespace One{
class C;
}

namespace Other{
using One::C;
}

Other::C 应该使用哪个特化?无论您做出什么决定,都会以一种或另一种方式造成混淆。

关于c++ - 为不同命名空间中的类专门化模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594265/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com