问题标签 [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.
c++ - 非类型模板函数重载问题
考虑:
为什么qwe(TypeFlag<T>,TypeFlag<T*>)
比更专业qwe(TypeFlag<T>,TypeFlag<F>)
,而void asd(SizeFlag <START>, SizeFlag<START + 1>)
不是更专业void asd(SizeFlag<START>, SizeFlag<END>)
?
c++ - 如何仅启用指定类型的模板功能/禁用任何其他类型
它以这种方式工作,但我想知道......这是正确的方式吗?我花了很多时间试图让它与模板专业化一起工作,但我就是想不通。例如,它与“const char *”一起工作,但这不是我的意图。
我的目标是为除我专门的类型之外的任何类型禁用此功能,同时禁用隐式类型转换。
对此有什么意见吗?有更好的做法吗?
我越来越多地使用模板,我确实从中看到了一些好处,但有时我仍然觉得自己很绝望。
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 的正确语法是什么?
请帮助我,请。
c++ - C++中的函数模板特化,没有重载函数的实例
我正在学习 C++ 中的函数模板专业化,我的任务是编写一个名为的模板函数,该函数plus
返回它的两个参数的总和,这些参数可能是不同类型的。一个按值接受的版本,另一个按指针接受的版本。作为一个额外的挑战,我被要求重载这个函数,以便它连接两个字符串。
问题是我在连接两个字符串的函数的专业化重载上遇到错误。我决定选择std::string_view
over的原因std::string
是,当使用字符串文字 ( const char*
) 调用函数时,它不会解析为接受 aconst *
我猜想将解析 over的第二个定义std::string
。
所以我无法真正弄清楚发生了什么。只是一个疯狂的猜测,但这可能与我调用了两个不同的模板函数有关plus
,但它无法确定我要专门化/重载哪个模板函数?
更新:
问题似乎与模板解析有关。const T*
对于任何字符串文字,始终首选接受的定义。只是想找到解决办法。
c++ - 派生类中的重载函数
我想在派生类中有一些重载函数,但它不起作用。是什么原因?以及如何使其工作?
通过https://godbolt.org/z/hTGjjx43o,打印结果:
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')
任何帮助将不胜感激!