问题标签 [function-templates-overloading]

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.

0 投票
1 回答
74 浏览

c++ - 非类型模板函数重载问题

考虑:

为什么qwe(TypeFlag<T>,TypeFlag<T*>)比更专业qwe(TypeFlag<T>,TypeFlag<F>),而void asd(SizeFlag <START>, SizeFlag<START + 1>)不是更专业void asd(SizeFlag<START>, SizeFlag<END>)

0 投票
0 回答
67 浏览

c++ - 如何仅启用指定类型的模板功能/禁用任何其他类型

它以这种方式工作,但我想知道......这是正确的方式吗?我花了很多时间试图让它与模板专业化一起工作,但我就是想不通。例如,它与“const char *”一起工作,但这不是我的意图。

我的目标是为除我专门的类型之外的任何类型禁用此功能,同时禁用隐式类型转换。

对此有什么意见吗?有更好的做法吗?

我越来越多地使用模板,我确实从中看到了一些好处,但有时我仍然觉得自己很绝望。

0 投票
3 回答
78 浏览

c++ - 如何在函数重载中推断 lambda 的模板参数?

我应该如何修改我现在的函数签名

为了被调用

Visual Studio 2019 提供

C2783 'bool isPrime(const TypeData &,TypeFunc1,TypeFunc2,const bool)':无法推断出 'TypeFunc2' 的模板参数

不过,没有 一切都很好TypeFunc2 isDivisible = [](const TypeData& a,const TypeData& b) {return a%b==0;}

传递默认 lambda 的正确语法是什么?
请帮助我,请。

0 投票
2 回答
71 浏览

c++ - C++中的函数模板特化,没有重载函数的实例

我正在学习 C++ 中的函数模板专业化,我的任务是编写一个名为的模板函数,该函数plus返回它的两个参数的总和,这些参数可能是不同类型的。一个按值接受的版本,另一个按指针接受的版本。作为一个额外的挑战,我被要求重载这个函数,以便它连接两个字符串。

问题是我在连接两个字符串的函数的专业化重载上遇到错误。我决定选择std::string_viewover的原因std::string是,当使用字符串文字 ( const char*) 调用函数时,它不会解析为接受 aconst *我猜想将解析 over的第二个定义std::string

所以我无法真正弄清楚发生了什么。只是一个疯狂的猜测,但这可能与我调用了两个不同的模板函数有关plus,但它无法确定我要专门化/重载哪个模板函数?

更新:

问题似乎与模板解析有关。const T*对于任何字符串文字,始终首选接受的定义。只是想找到解决办法。

0 投票
0 回答
57 浏览

c++ - 派生类中的重载函数

我想在派生类中有一些重载函数,但它不起作用。是什么原因?以及如何使其工作?

通过https://godbolt.org/z/hTGjjx43o,打印结果:

0 投票
0 回答
25 浏览

c++ - 仅在模板类中为双精度类型添加函数模板特化

我有一个带有基类的类模板的实现。

在 cpp [从课堂上移出]:

我想为 getErrorPercent、getFotmattedText 和 getErrorPercentageStr 添加函数模板专门化,仅用于双精度类型。

对于 getErrorPercent 我想:

对于 getFotmattedText 我想:

double 的 getErrorPercentageStr 函数将计算误差 [m_measured and m_expected will be doubles] 并将其作为字符串返回。对于所有其他类型,它将返回一个空字符串。

我一直在寻找解决方案,但无法编译或调用正确的 double 函数。

我如何/在哪里放置函数的专用版本?我不认为我可以把这些放在课堂上。

在 h 或 cpp 文件中?

我可以在课堂上留下函数[非专业]的主要实现吗?

我是否需要将原型放在某个特定功能的地方?

然后在cpp中实现?

我尝试了这个并为 MyClass::getFormattedText() 和 MyClass::getErrorPercent() 的 int 版本获得了很多“未解析的外部符号”。也适用于 bool、unsigned int 和 std::basic_string 版本。所有这些都应该使用默认版本。

我该如何解决这些问题?

我确实让它使用“if constexpr (std::is_same_v<T, double>)”来处理它,但这无法用 vxWorks 编译。抱怨 << for double in getErrorPercentageStr where "rep << difference << "V";"。

错误:'operator<<' 不匹配(操作数类型为 'std::ostringstream' 和 'double')

任何帮助将不胜感激!

0 投票
1 回答
78 浏览

c++ - 具有不同参数类型的约束函数模板与无约束函数模板

在以下两个模板函数中,一个尝试受到更多约束:

当使用 int 调用时,Clang 和 GCC 不同:

哪一个是对的?

代码:https ://godbolt.org/z/x71zjzoTa