-
12 votesanswersviews
F#和接口实现的成员
我有一个令人烦恼的错误 . type Animal = abstract member Name : string type Dog (name : string) = interface Animal with member this.Name : string = name let pluto = new Dog("P... -
10 votesanswersviews
Kotlin:内联lambda和重载决策模糊
我有一个简单的工厂模式,其中的实现是通过重载决定来确定的 . 问题是Kotlin编译器抱怨内联lambda的“Overload resolution ambiguity ..” . class Foo(){ companion object Factory { fun create(x: Int, f: (Int) -> Double) = 2.0 f... -
12 votesanswersviews
部分专业结构vs重载功能模板
众所周知,功能模板不能部分专门用于C语言 . 当您在概念上尝试实现此目标时,您可以使用两种可能的解决方案 . 其中一个是使用带有静态函数的结构,可选地用模板函数包装,如下所示: template <class T, class U> struct BarHelper { static void BarHelp(T t, const U& u) { ... -
3 votesanswersviews
在Clang上重载操作符歧义但在GCC上没有重载,哪一个是正确的?
#include <iostream> template <typename T> struct Wrapper { operator T const &() const & { std::cout << "Wrapper::operator T const &() const &\n&quo... -
11 votesanswersviews
两个函数模板何时被视为部分有序且何时不明确?
在阅读了问题How to make these std::function parameters unambiguous?后,我完全感到困惑,到目前为止,我认为我理解了函数模板的部分排序,但是在阅读了这个问题后,我写了三个例子来检查编译器的行为,并且收到的结果很难我理解 . 示例#1 template <class T> void foo(T) {} template <cla... -
19 votesanswersviews
模板偏序 - 为什么部分演绎在这里成功
考虑以下简单(在模板问题的范围内)示例: #include <iostream> template <typename T> struct identity; template <> struct identity<int> { using type = int; }; template<typename T> void b... -
19 votesanswersviews
模板偏序 - 为什么部分演绎在这里成功
考虑以下简单(在模板问题的范围内)示例: #include <iostream> template <typename T> struct identity; template <> struct identity<int> { using type = int; }; template<typename T> void b... -
18 votesanswersviews
这会编译吗?重载分辨率和隐式转换
这个例子似乎用VC10和gcc编译(虽然我的gcc版本很老) . 编辑:R . Martinho Fernandez在gcc 4.7上试过这个并且行为仍然是一样的 . struct Base { operator double() const { return 0.0; } }; struct foo { foo(const char* c) {} }; struct Some... -
1 votesanswersviews
带有重载泛型方法的重载解决问题
我确实遇到了重载泛型方法的问题 . 考虑这个例子: class Foo { func foo<T>(v: T) { println("foo<T>(v: T)") } func foo<T>(x: Int, v: T) { println("foo<T>(x: I... -
4 votesanswersviews
奇怪的扩展方法重载决议
我'm having trouble getting the compiler to resolve the correct overload for an extension method. The best way for me to explain is with a little code. Here'是一个演示问题的LINQPad脚本 . 这赢得了't compile because o... -
23 votesanswersviews
多重继承运算符的重载分辨率()
首先,考虑这个C代码: #include <stdio.h> struct foo_int { void print(int x) { printf("int %d\n", x); } }; struct foo_str { void print(const char* x) { printf(&q... -
2 votesanswersviews
ECJ和Javac之间在重载解决方面的分歧与初始类型的功能接口
我对Eclipse ecj和Oracle Javac编译器有不同意见 . 以下代码使用Javac编译,jdk8(1.8.0_131)和jdk9()预发布,但Eclipse 4.7与JDT 3.13.0.v20170612-0950报告错误: import java.util.function.ToDoubleFunction; import java.util.function.ToIntFunc... -
20 votesanswersviews
如何以编程方式在C#中执行方法重载解析?
当C#编译器解释方法调用时,它必须使用(静态)参数类型来确定实际调用哪个重载 . 我希望能够以编程方式执行此操作 . 如果我有方法的名称( string ),声明它的类型( System.Type 的实例),以及我希望能够调用标准库函数并返回表示该方法的 MethodInfo 对象的参数类型列表C#编译器会选择调用的方法 . 例如,如果我有 class MyClass { public voi... -
6 votesanswersviews
泛型,重载解析和代理(对不起,找不到更好的 Headers )[重复]
可能重复:为什么Func <T>与Func <IEnumerable <T >>不明确? 我注意到泛型的一个非常奇怪的重载解决问题...... 请考虑以下方法: static void Foo<TSource>(TSource element, Func<TSource, int> selector) { "int&... -
8 votesanswersviews
重载的方法组参数会混淆重载决策?
以下调用重载的Enumerable.Select方法: var itemOnlyOneTuples = "test".Select<char, Tuple<char>>(Tuple.Create); 失败并出现歧义错误(为清晰起见,删除了名称空间): The call is ambiguous between the following methods...