C++11 重载解析的奇怪情况
今天我遇到了一个相当奇怪的重载解析案例。我将其简化为以下内容: struct S { S(int, int = 0); }; class C { public: template C(S, Args... args);…
为什么调用非 const 成员函数而不是 const 成员函数?
为了我的目的,我尝试包装一些类似于 Qt 共享数据指针的东西,经过测试,我发现当应该调用 const 函数时,会选择它的非 const 版本。 我使用 C++0x 选…
C++编译器选择了类成员函数的错误重载
我有这样的代码: template class Something { T val; public: inline Something() : val() {} inline Something(T v) : val(v) {} inline T& get() c…
c++重载运算符解析
我正在学习 C++ 并使用 C++ Primer。考虑以下练习 14.46: class Complex { Complex(double); // ... }; class LongDouble { friend LongDouble opera…
重载方法中的 StackOverflowException
我试图在这样的代码中调用重载方法: public abstract class BaseClass { public abstract bool Method(T other); } public class ChildClass : BaseC…
为什么类的 const 版本选择非常量版本?
以下是测试代码: struct A { operator int (); operator int () const; }; void foo (const int); 现在,调用时: foo(A()); // calls A::operator i…
C++0x const RValue 引用作为函数参数
我试图理解为什么有人会编写一个采用常量右值引用的函数。 在下面的代码示例中,const 右值引用函数(返回“3”)的用途是什么。 为什么重载解析优先…
传递 size_t 时对重载 sqrt 函数的不明确调用
string aux; int maxy, auxx = 0; cin >> aux; maxy = (int)sqrt(aux.size()); 为什么我会收到此错误: 1> error C2668: 'sqrt' : ambiguous call to …
为什么 C# 编译器重载解析算法将具有相同签名的静态成员和实例成员视为相等?
让我们有两个签名相等的成员,但一个是静态的,另一个不是: class Foo { public void Test() { Console.WriteLine("instance"); } public static voi…
在可变参数模板函数中重载 ostream
我有一个可变参数函数,我想在第一个参数类型上重载。 void write( void ) { } void write( std::ostream& ) { } template void write( std::ostream&…
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…
重载解析和数组:应该调用哪个函数?
考虑以下程序: #include #include void f(char const*&&) { std::puts("char const*&&"); } // (1) void f(char const* const&) { std::puts("char c…