相关疑难解决方法(0)

它是编译器还是仅仅是我:继承自lambda所包含的可变参数模板

我有一些代码在GCC下工作,但无法在Visual Studio 2015下编译(我意识到它正在开发中,但我认为应该实现这个领域).

template< typename... T >
class inherit : public T...
{
public:
inherit(T... t) : T(t)... {}
};

int main() {
  auto l1 = []() {};
  auto l2 = []() {};
  inherit<decltype(l1), decltype(l2)> test(l1, l2);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是代码片段简化为它的纯粹本质.Visual Studio在继承的构造函数上说"语法错误:'type'".然后它会稍微探讨它是如何到达那里的,并以"你不能构建一个lambda实例"结束.

我的假设是T(t)的扩展......没有正确扩展.但是我可能会错误地使用语法.

编辑:对不起,问题是:我在这里有错吗?如果是这样,那么正确的语法是什么?

其他发现:为了与我所拥有的回复保持一致,这似乎是Visual Studio 2015在此领域存在错误的问题.在测试中,它似乎是扩展,其中构造函数params被传递给具有问题的lambda基类.以下测试在VS2015下运行:

template< typename T1, typename T2, typename... T3 >
class inherit2 : public T3...
{
public:
  inherit2(T1 t1, T2 t2) : T1(t1), T2(t2) {}
};

int main() {
  auto l1 = []() …
Run Code Online (Sandbox Code Playgroud)

lambda templates variadic c++11 visual-studio-2015

10
推荐指数
1
解决办法
236
查看次数

C++:在多集合容器中使用自己的类

起初我是新来的,英语不是我的母语,所以对任何语法上的失败道歉,但我发现这个社区真的很好,所以我会尽可能准确地问我的问题.

我想将自己的类对象添加到stl容器multiset中,并希望使用我自己在类中定义的重载less运算符对其进行排序.我真的尝试了几种解决方案,但没有真正有效,所以我希望有人可以给我一些有用的提示来解决它.

这是我对类定义的总体看法:

class object {
public:
    int first;
    string second;

    object(int f, string s) {
         first = f;
         second = s;
    }

    bool operator<(const object &comp) {
        return first < comp.first;
        }
};
Run Code Online (Sandbox Code Playgroud)

这是我的第一次尝试,它没有用,所以我也尝试将重载的运算符声明为朋友方法,但它也不起作用.

这是我的主要功能的简短代码摘录:

includes ...
//code omitted
int main() {
    multiset<object*> mmset;

    mmset.insert(new object(10, "test"));
    mmset.insert(new object(11, "test"));

    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

过了一会儿,我开始调试我的代码,并试图找出问题所在,我遇到了以下让我有点怀疑的事情.

来自stl的代码提取:

// TEMPLATE STRUCT less
template<class _Ty>
struct less : public binary_function<_Ty, _Ty, bool>
    {   // functor for operator<
    bool operator()(const _Ty& _Left, const _Ty& …
Run Code Online (Sandbox Code Playgroud)

c++ containers stl operator-overloading multiset

3
推荐指数
1
解决办法
2561
查看次数