overload-resolution相关内容
在本例中,类Foo和Bar是从库中提供的。我的类Baz从两者继承。 struct Foo { void do_stuff (int, int); }; struct Bar { virtual void do_stuff (float) = 0; }; struct Baz : public Foo, public Bar { void func () {
..
我正在转换一个大型代码,以使用定制的共享指针而不是原始指针。我对超载解决方案有问题。考虑这个例子: #include struct A {}; struct B : public A {}; void f(const A*) { std::cout
..
考虑简单代码: #include struct A { operator double(){ std::cout
..
..
为了我的目的,我尝试包装类似于 Qt 的共享数据指针的东西,经过测试,我发现应该调用 const 函数时,选择了它的非 const 版本. 我正在使用 C++0x 选项进行编译,这是一个最小的代码: 结构数据{int x() 常量 {返回 1;}};模板结构容器{容器() {ptr = 新 T();}T&操作员*() {puts("非常量数据指针");返回 *ptr;}T * 运算
..
我正在尝试编写一个具有一些重载方法的 C++ 类: 类输出{上市:静态无效打印(布尔值){std::cout
..
例如这样的代码: 结构 A { A(int);};结构 B { B(A);};主函数(){乙乙{{0}};//行B c({0});//错误} 错误信息是: f.cc: 在函数'int main()'中:f.cc:7:9: 错误:重载 'B()' 的调用不明确B c({0});//错误^f.cc:7:9:注意:候选人是:f.cc:2:12:注:B::B(A)结构 B { B(A);};^f.c
..
我想使用 SFINAE 检查特定命名空间中是否存在函数.我发现 SFINAE 可以测试来自另一个命名空间的免费函数 可以完成这项工作,但有些事情我不明白. 目前我有这个工作代码,直接来自链接的问题: //切换到0测试其他情况#define ENABLE_FOO_BAR 1命名空间 foo {#if ENABLE_FOO_BAR整数条();#万一}命名空间细节重载{模板
..
前段时间我读了一篇文章,解释了参数依赖查找的几个陷阱,但我再也找不到了.这是关于获得对你不应该访问的东西的访问权或类似的东西.所以我想我会在这里问:ADL 的陷阱是什么? 解决方案 依赖于参数的查找存在很大的问题.例如,考虑以下实用程序: #include 命名空间实用程序{模板无效打印(T x){std::cout
..
我有一个令人烦恼的错误. type Animal =抽象成员名称:字符串类型狗(名称:字符串)=接口动物与成员 this.Name : string =名称let pluto = new Dog("Pluto")让名称 = pluto.Name 最后一行,特别是“Name"会生成一个编译器错误,指出“未定义字段、构造函数或成员‘Name’". 我使用的解决方法是编写 let name
..
这个问题是在回答这个关于枚举重载解析的问题时出现的. 虽然long long的情况肯定是MSVC2012NovCTP中的一个错误(根据标准文本和gcc 4.7.1的测试),但我无法弄清楚为什么会出现以下行为: #include 枚举 charEnum : char { A = 'A' };void fct(char) { std::cout
..
以下调用重载的Enumerable.Select 方法: var itemOnlyOneTuples = "test".Select>(Tuple.Create); 由于歧义错误而失败(为了清晰起见,删除了命名空间): 以下方法或属性之间的调用不明确:'Enumerable.Select>(IEnumerable,Func)'和'Enumerable.Select>(IEnumerable,
..
当我遇到这种特殊情况时,我正在实现同步/异步重载: 当我有一个没有参数或返回值的正则 lambda 表达式时,它会进入带有 Action 参数的 Run 重载,这是可预测的.但是当该 lambda 包含 while (true) 时,它会使用 Func 参数进行重载. public void Test(){Run(() => { var name = "bar"; });Run(() =>
..
考虑以下示例代码: 示例: void print(int n) {cout
..
我正在玩一个在 C++ 中重载 lambdas 的技巧.具体: //对于 std::function#include //对于 std::string#include //对于 std::cout#include 模板 结构重载:F...{超载(F... f) : F(f)... {}};模板 自动 make_overload(F... f) {返
..
我有以下代码: #include 模板 void f (T) { std::cout (真);//#2 打印 f(bool)} #1 行调用 f(T),而 #2 行调用 f(bool).
..
考虑以下简单(就模板问题而言)示例: #include 模板 结构标识;模板 结构标识{使用类型 = int;};模板void bar(T, T) { std::cout ::type) { std::cout
..
例如你有一个类型: 公共类EffectOptions{公共效果选项(参数对象 [] 选项){}公共 EffectOptions(IEnumerable 选项){}公共 EffectOptions(字符串名称){}公共 EffectOptions(对象所有者){}公共 EffectOptions ( int count ) {}公共 EffectOptions(点点){}} 这里我只给出了使用构
..
考虑以下程序: #include #include void f(char const*&&) { std::puts("char const*&&");}//(1)void f(char const* const&) { std::puts("char const* const&");}//(2)模板 void f(char const (&)[N]) { std
..
假设我正在编写一个函数来打印字符串的长度: template void foo(const char (&s)[N]) {std::cout
..