问题标签 [template-specialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 与枚举匹配的模板函数中的 C++ 无法解释的变化
我有以下包含模板函数的代码。当我使用第二个参数作为枚举调用此函数时:在某些情况下,它会找到模板专业化,而在某些情况下却没有。
我已经验证枚举在两种情况下都是相同的枚举(例如,没有重新定义)并且其他参数具有正确的值,我发现一个编译是使用 -Winline set 完成的(我还没有尝试更改它)还有什么看着?
c++ - 如何只专门化模板类的某些成员?
代码:
错误:
基本上,我只想专门化一个函数,而对其他函数使用通用定义。(在实际代码中,我有很多我不想专门研究的功能)。
这该怎么做?谢谢!
c++ - C++ - 具有右值引用的函数模板特化的行为
我正在尝试实现条件指针取消引用功能。基本思路如下:
为了限制必要专业化的数量,我尝试在arg
不是指针的情况下使用右值引用。这是我当前的实现(std::cout
仅用于调试目的):
现在,我在 GCC 4.6 下得到了一个相当奇怪的行为。第一个重载用于非指针类型和指针类型。显然,当使用指针类型时,它与第二个重载冲突。如果我注释掉第二个并使用第一个调用以下...
...相应的控制台输出为:
在同一上下文中,非指针类型(根据std::is_pointer
)怎么可能也是指针类型(根据)?typeid
由于std::is_pointer
错误地报告p
为非指针类型,两个重载之间会出现冲突。此外,当我在第一次重载中将 r 值引用替换为标准引用时:
它不再与第二次重载冲突......我只是不明白发生了什么。顺便说一句,使用第二个重载会产生(正如预期的那样):
谢谢你的帮助。
c++ - 模板类中模板函数的 C++ 特化
专门用于模板类中的模板函数的 C++ 语法是什么?例如,考虑我有以下两个类及其用法。我希望能够为不同类型提供方法 X::getAThing() 的专门实现。例如:int、std::string、任意指针或类等。
至少一个小时,我一直在尝试猜测专业化的正确语法,但无法弄清楚任何可以编译的东西。任何帮助将不胜感激!
c++ - 函数模板的部分特化
在下面的代码片段中,
我想修改模板,通过传递除浮点数以外的任何类型将打印“全部”,传递浮点数将打印“浮点数”。我不想要模板专业化,而是有部分专业化,它将根据输入类型相应地采取行动。我该怎么做。提前致谢。
好吧,我目前面临的情况是,我需要定义以下内容,
以下调用应打印“t2”
以下调用应打印“t1”
像上面这样的某种分组,其中很少有人应该调用部分专业化实现,而其他人应该调用默认实现。
c++ - 类模板特化中的 decltype
我正在尝试在模板类中使用 decltype,如下所示:
这很好用,但现在我想添加一个明确的专业化:
这次 g++ 报错:
我究竟做错了什么?我正在使用 gcc 4.5。
编辑:如果我void f();
按照 Johannes 的建议将声明移到 typedef 上方,我会得到(稍微)不同的错误:
c++ - C++ 使用指向模板对象的指针
我有一个名为 ABC 的类,它有一个类模板:
在另一个类中,我试图将对象 ABC 存储在列表中:
我打算存储可能具有不同类模板参数的 ABC 对象。是否有必要在编译时为指针指定模板?如果容器应该存储不同类型的对象怎么办?那不可能吗?
c++ - 为什么函数模板不能部分特化?
我知道语言规范禁止函数模板的部分专业化。
我想知道为什么它禁止它的理由?它们没有用吗?
c++ - 函数模板特化编译错误
我得到的错误是:error LNK2005: "void __cdecl func(int)" (??$func@H@@YAXH@Z) 已经在 A.obj 中定义,找到一个或多个多重定义的符号
函数模板特化不被视为普通函数模板吗?看起来它将在 A 的目标文件中。
c++ - c ++模板专业化 - 链接器错误多个定义
我今天在这里的第三个问题;-),但我对 C++ 模板编程和运算符重载真的很陌生。
我正在尝试以下操作:
终端日志.hh
试图编译这段代码,它给了我一个链接器错误:
因此,我目前正在将头撞在墙上,寻找解决方案。但是我在墙上找不到...
如果有人能告诉我我的错误,那就太好了
非常感谢
铁龙塞