首页 > TAG信息列表 > overload-resolution

c-在Windows上为Matlab构建libspline-对重载函数’pow’的歧义调用

我正在尝试在Windows上为Matlab构建libspline,可从此处获取: http://ttic.uchicago.edu/~smaji/projects/libspline-release1.0.tar.gz 我收到以下错误: >> make additiveModel.cpp additiveModel.cpp(156) : error C2668: 'pow' : ambiguous call to overloaded function

c-具有已选择具有非const ref的复制构造函数的参数类型的函数?

前段时间,当我想编写is_callable< F,Args ...>时,我对某些代码的以下行为感到困惑.特征.重载解析不会调用非const ref接受参数的函数,对吗?为什么在下面它不拒绝,因为构造函数想要一个Test&amp ;?我希望它取f(int)! struct Test { Test() { } // I want Test not be copyable fr

c-如何防止函数模板中的隐式转换?

如何定义函数模板以防止隐式转换? 看来我可以防止使用非模板函数但不能使用函数模板进行隐式转换. 将转发引用功能模板定义为= delete过于激进,因为它阻止了使用非常量左值引用的调用. 用const rvalue参数将函数模板定义为= delete [1] 不会阻止隐式转换. 通过= delete可以为特定类

c – 2参数函数的重载分辨率不正确

我们来看下面的示例程序: #include <cmath> namespace half_float { template<typename T> struct half_expr {}; struct half : half_expr<half> { operator float() const; }; template<typename T> half sin(const half_expr

c – SFINAE是否适用于职能机构?

我有以下示例代码: class Serializable {}; class MyData : public Serializable {}; void GetData( Serializable& ) {} template<typename T> void GetData( T& data ) { std::istringstream s{"test"}; s >> data; } int main() {

c – 为什么编译器在没有引用运算符的情况下无法决定调用哪个函数?

下面你可以看到名为max的小函数. template <typename T> T max(T& arg1, T& arg2) { if (arg1 > arg2) { return arg1; } else { return arg2; } } 当我在main中调用此函数时,它完全有效,但是如果我从参数中删除引用 T max(T arg1, T arg2)

c – 如果有专门的函数和模板函数,为什么没有必要专门用于`std :: nullptr_t`

请考虑以下代码: #include <iostream> using namespace std; void fun(const char* s){ if (s == nullptr) { puts("const char* nullptr"); } else { printf("%s\n", s); } } template <typename T> void fun(T* p

c – 在命名成员函数重载决策期间,’this’何时不在范围内?

从cppreference开始: Call to a named function <…> If the expression E is a primary expression, the name is looked up following normal rules for function calls (which may involve ADL). The function declarations found by this lookup are (due to the way

c – 如何指定callable应该指向的重载?

参见英文答案 > How do I specify a pointer to an overloaded function?                                    6个 #include <thread> struct Callable { void start() {}; void start(unsigned) {}; }; int main() { Callab

C 11左值,右值和std :: move()

我有以下代码: #include <iostream> using namespace std; void test(int& a) { cout << "lvalue." << endl; } void test(int&& a) { cout << "rvalue" << endl; } int main(int argc, char *argv[]) {

C:继承和重载解析

我在这里读一个C拼图:http://gotw.ca/gotw/005.htm 我不理解他对静态与动态重载决策(或默认参数)的解释,所以我试着提炼出这个问题并自己编写一些测试: class Base { public: virtual void foo() {cout << "base/no parameters" << endl;} virtual void foo(int a) {cou

C#4中的过载分辨率和可选参数

我正在使用一些代码,它有一个函数TraceWrite的七个重载: void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, string Data = ""); void TraceWrite(string Application, LogLevelENUM LogLevel, string Message, bool LogToFileOnly, string Data = "&

c# – 有什么方法可以使扩展方法优先于泛型方法?

在.NET中,如果存在具有方法Foo< T>(T t)(无约束)和方法Foo(字符串s)的类,则调用Foo(“test”)调用接受字符串的Foo.这一切都很好,除非字符串重载是一种扩展方法,在这种情况下,总是调用泛型版本.这个问题有一些解决方法,还是我运气不好?解决方法:简答:不 在C# 5.0 Language Specificat

c# – Visual Studio错误解决方法中的lambda与Func委托重载?

在具有各种Func委托重载的函数中使用匿名方法时,我在Visual Studio 2010中遇到了一些奇怪的行为. 我在下面创建了一个小型复制课程. 考虑这个ListViewAdapter类 namespace LambdaTestApp { public class ListViewAdapter<T> { private Func<int, string, int, str

c#泛型和非泛型方法之间的重载决策

我在互联网和stackoverflow上做了一些基本搜索,当涉及泛型版本方法和非泛型版本方法时,我看到了很多关于重载解析的讨论.我知道重载解析是在编译时完成的 – 因此如果我有这个代码: public class A<T> { public void DoStuff(T value) { InternalDoStuff(value);

在C#中解决方法重载的优先规则是什么?

我正在编写一个序列化器,其中我想广泛地利用方法重载,来序列化从IEnumerable< T>,IDictionary< K,V>派生的类型的对象.等等. 我还打算使用dynamic关键字让C​​LR根据要序列化的对象的运行时类型选择正确的重载. 看看这段代码: void Serialize<TKey, TValue>(IDictionary<TKey, TVa

c# – 使用泛型类型参数时模糊方法重载

考虑以下程序: using System; using System.Threading.Tasks; public class Program { public static void Main() { var stringTask = Task.FromResult("sample"); stringTask.TeeAsync(st => Task.CompletedTask).Wait(); } } public