当传递空值时,方法重载解析系统如何决定调用哪个方法?
例如,您有一个类似的类型: public class EffectOptions { public EffectOptions ( params object [ ] options ) {} public EffectOptions ( IEnumer…
关于泛型和 IEnumerable 的方法重载解析
前几天我注意到这一点,假设你有两个重载方法: public void Print(IEnumerable items) { Console.WriteLine("IEnumerable T"); } public void Print(…
无用的(也许是错误的?)gcc 错误消息
我刚刚花了几个小时调试一个编译器错误,如果编译器的错误消息更有帮助的话,我可以立即修复该错误。 我将其简化为一个简单的示例: template int f(i…
参数类型的函数具有选择的非常量引用的复制构造函数?
不久前,当我想编写 is_callable 特征时,我对某些代码的以下行为感到困惑。重载解析不会调用接受非常量引用参数的函数,对吧?为什么它在下面不拒绝…
当传递整数文字 0 时,调用采用 unsigned int 或指针的重载函数是不明确的
这个错误信息是什么意思? error: call of overloaded ‘setval(int)’ is ambiguous huge.cpp:18: note: candidates are: void huge::setval(unsigne…
泛型、重载解析和委托(抱歉,找不到更好的标题)
可能的重复: 为什么 Func与 Func> 不明确? 我注意到泛型有一个非常奇怪的重载解析问题... 考虑以下方法: static void Foo(TSource element, Func …
为什么 NULL 会转换为 string*?
我看到了下面的代码: class NullClass { public: template operator T*() const { return 0; } }; const NullClass NULL; void f(int x); void f(str…
如何在函数重载决策中转储候选者?
如何转储函数调用的候选函数(或可行函数或最佳可行函数)? 我知道 g++ 提供了一个转储类层次结构的选项。 (事实上,Visual Studio 2010 提供了…
为什么编译器不解析对模板函数的调用?
在下面的程序中,为什么编译器会为调用 printMax 模板函数而不是调用 printMaxInts 函数生成错误? #include template void printMax(A a,A b) { A c …
C# 4 中的重载解析和可选参数
我正在使用一些代码,该代码具有函数 TraceWrite 的七个重载:( void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, stri…