为什么 C# 编译器重载解析算法将具有相同签名的静态成员和实例成员视为相等?
让我们有两个签名相等的成员,但一个是静态的,另一个不是: class Foo { public void Test() { Console.WriteLine("instance") } public static void…
在可变参数模板函数中重载 ostream
我有一个可变参数函数,我想在第一个参数类型上重载。 void write( void ) { } void write( std::ostream& ) { } template< typename Head, type…
C++0x 与 using 声明的混淆
对于这种情况会发生什么: struct A { void f() } struct B : virtual A { using A::f } struct C : virtual A { using A::f } struct D : B, C { voi…
重载解析和数组:应该调用哪个函数?
考虑以下程序: #include <cstddef> #include <cstdio> void f(char const*&&) { std::puts("char const*&&") } // (1) void f(c…
当传递空值时,方法重载解析系统如何决定调用哪个方法?
例如,您有一个类似的类型: public class EffectOptions { public EffectOptions ( params object [ ] options ) {} public EffectOptions ( IEnumer…
关于泛型和 IEnumerable 的方法重载解析
前几天我注意到这一点,假设你有两个重载方法: public void Print<T>(IEnumerable<T> items) { Console.WriteLine("IEnumerable T") } publi…
无用的(也许是错误的?)gcc 错误消息
我刚刚花了几个小时调试一个编译器错误,如果编译器的错误消息更有帮助的话,我可以立即修复该错误。 我将其简化为一个简单的示例: template <type…
参数类型的函数具有选择的非常量引用的复制构造函数?
不久前,当我想编写 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>(TSource…
为什么 NULL 会转换为 string*?
我看到了下面的代码: class NullClass { public: template<class T> operator T*() const { return 0 } } const NullClass NULL void f(int x) v…
如何在函数重载决策中转储候选者?
如何转储函数调用的候选函数(或可行函数或最佳可行函数)? 我知道 g++ 提供了一个转储类层次结构的选项。 (事实上,Visual Studio 2010 提供了…