小编mak*_*mak的帖子

如何创建用捕获的变量包装 lambda 的函子?

如何更改下面的函子以用作 lambda 包装器?

template<typename T>
class F {
  T f;
public:
  F(T t){
      f = t;
  }
  T& operator()(){
    return f;
  }
};

int main()
{
    int x = 5;
    F<int (*)(int, int)> f( [x](int a, int b){return a+b;} );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器说

error: no matching function for call to 'F<int (*)(int, int)>::F(main()::<lambda(int, int)>)'
     F<int (*)(int, int)> f( [x](int a, int b){return a+b;} );
Run Code Online (Sandbox Code Playgroud)

c++ lambda functor c++14

5
推荐指数
1
解决办法
4713
查看次数

在OpenGL中`glEnableVertexAttribArray(GLuint index)`的目的是什么?

打完电话后glVertexAttribPointer(GLuint index, ...)顶点属性默认情况下禁用的文档

默认情况下,禁用所有客户端功能,包括所有通用顶点属性数组.

为什么我们必须使用额外功能启用它?有人可以命名一个案例,这有用吗?

在研究时我学到了以下内容:

  • 通过layout(location = x)在GLSL中使用限定符,glBindAttribLocation我们可以显式设置位置,而不是让OpenGL生成它.但这不是我的问题.

  • glEnableVertexAttribArray不能用于绘制具有多个着色器的一个VAO.当使用程序对象查询属性位置时,可以假设位置是着色器特定的; 然后我们可以预料,我们可以在运行正确的着色器之前启用正确的属性位置.但是,我注意到,在测试时,一个位置值可以在不同的着色器中出现多次; 此外,输出看起来不对.如果您希望查看代码,请询问.

  • 属性位置存储在VAO中.

opengl opengl-es glsl

3
推荐指数
2
解决办法
975
查看次数

C++错误:'x'不是常量表达式,如何修复?

简而言之,这是一个最小的例子:

struct C {
    const int X = 2;
    int y = 2;
};
void f(C* x) {
    switch(x->y) {
        case x->X: printf("%d", 42); break;
        case 123: printf("foo");
    }
}
int main()
{
    C c;
    f(&c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器会抱怨error: 'x' is not a constant expression以及如何修复它?

c++ logic compiler-errors constexpr

2
推荐指数
1
解决办法
2007
查看次数

标签 统计

c++ ×2

c++14 ×1

compiler-errors ×1

constexpr ×1

functor ×1

glsl ×1

lambda ×1

logic ×1

opengl ×1

opengl-es ×1