为什么我不能enable_if在以下上下文中使用?
我想检测我的模板化对象是否具有成员函数 notify_exit
template <typename Queue>
class MyQueue
{
public:
auto notify_exit() -> typename std::enable_if<
has_member_function_notify_exit<Queue, void>::value,
void
>::type;
Queue queue_a;
};
Run Code Online (Sandbox Code Playgroud)
初始化为:
MyQueue<std::queue<int>> queue_a;
Run Code Online (Sandbox Code Playgroud)
我不断收到(clang 6):
example.cpp:33:17: error: failed requirement 'has_member_function_notify_exit<queue<int, deque<int, allocator<int> > >, void>::value';
'enable_if' cannot be used to disable this declaration
has_member_function_notify_exit<Queue, void>::value,
Run Code Online (Sandbox Code Playgroud)
或(g++ 5.4):
In instantiation of 'class MyQueue<std::queue<int> >':
33:35: required from here
22:14: error: no type named 'type' in 'struct std::enable_if<false, void>'
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的东西,但不知道为什么我不能enable_if用来禁用这个功能。这不正是enable_if为了什么吗?
是什么
private:
BOOL (LASreader::*read_simple)();
Run Code Online (Sandbox Code Playgroud)
意思?
它来自LAStools,位于lasreader.hpp
BOOL是一个typedef bool(来自mydefs.hpp),但我不知道这行是什么声明,特别是::*(双冒号星号),它看起来像一个函数调用.
我编写了一个PHP扩展来访问静态库中的函数,我将PHP构建为CGI,一切似乎都有效(经过几天的工作......)
一旦所有工作都兴奋,我重新编译PHP而没有调试我在其中的消息.(php_printf("here111");.... php_printf("sending arguments...");)
然后,它就停止了工作.我在静态库中调用的函数有效,我通过直接从另一个可执行文件调用它来测试它.
我使用调试符号(--enable-debug)构建了PHP,并且可以在gdb中将其调试到一定程度.
我仍然在努力弄清楚出了什么问题.似乎lib(diffFst)中的函数似乎无法读取输入参数.
268 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssssssd",
269 &filA, &filA_len,
270 &nomvarA, &nomvarA_len,
271 &filB, &filB_len,
272 &nomvarB, &nomvarB_len,
273 &filO, &filO_len,
274 &newnomvar, &newnomvar_len,
275 &mult
276 ) == FAILURE) {
277 RETURN_LONG(-100);
278 }
279
280 php_printf("Read arguments:\nfilA: %s, nomvara: %s\nfilB: %s, nomvarB: %s\nfilO: %s, nomvarO: %s\nMult: %0.3f\n",
281 filA,nomvarA, filB,nomvarB, filO,newnomvar, mult);
282
285 ier = difffst_(filA,nomvarA, filB,nomvarB, filO,newnomvar, mult);
Run Code Online (Sandbox Code Playgroud)
当我调用此函数时,该php_printf()语句将起作用并打印出正确的值.但是,当我让它调用difffst_函数时,我在尝试读取输入变量时会遇到段错误.
diffFst函数是用fortran编写的:
5 …Run Code Online (Sandbox Code Playgroud) 我的SFINAE代码std::enable_if在GCC和Clang中使用编译,但在MSVC 2013中没有编译.
代码(在cpp.sh上也可用)是
#include <iostream>
#include <type_traits>
template <typename T, typename ... AdditionalInputs>
typename std::enable_if<sizeof...(AdditionalInputs) == 0, void>::type
CallDoDataProcessing(T var) {
std::cout << sizeof...(AdditionalInputs) << " additional inputs" << std::endl;
}
template <typename T, typename ... AdditionalInputs>
typename std::enable_if<sizeof...(AdditionalInputs) == 1, void>::type
CallDoDataProcessing(T var) {
std::cout << sizeof...(AdditionalInputs) << " additional inputs" << std::endl;
}
int main() {
CallDoDataProcessing<int>(3);
CallDoDataProcessing<int, int>(3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在GCC/Clang中,这在MSVC中完美运行,但我得到:
Error 1 error C2039: 'type' : is not a member of …Run Code Online (Sandbox Code Playgroud) 我在编写的QML应用中看到了主要的性能问题,该应用是在Scene3d。以1000点/秒的速度可以,但是基本上以10,000点的速度就停止了我的整个计算机。目标是获得数百万个积分(这是旧的应用程序,在变慢之前,Qt / VTK混合可以完成)。
我担心我没有将处理任务转移到另一个线程中,或者渲染不正确。...这是我的第一个Qt项目,对所有这一切都是新的。
基本上,我建立了一个点的circle_buffer(每个点是32个字节),将其复制到QByteArray一个自定义的QGeometry上,一个上Entity。该实体具有运行顶点和片段着色器的材质。
我可以做些什么来提高性能吗?
材料:
import Qt3D.Core 2.0
import Qt3D.Render 2.0
Material {
effect: Effect {
techniques: Technique {
renderPasses: RenderPass {
shaderProgram: ShaderProgram {
vertexShaderCode: loadSource("qrc:/shaders/pointcloud.vert")
fragmentShaderCode: loadSource("qrc:/shaders/pointcloud.frag")
}
renderStates: [
PointSize { sizeMode: PointSize.Programmable } //supported since OpenGL 3.2
]
}
graphicsApiFilter {
api: GraphicsApiFilter.OpenGL
profile: GraphicsApiFilter.CoreProfile
majorVersion: 4
minorVersion: 3
}
}
}
// some parameters...
}
Run Code Online (Sandbox Code Playgroud)
我的着色器非常简单:
顶点:
#version 430
layout(location = 1) in …Run Code Online (Sandbox Code Playgroud) 为什么 my 可以Q_GADGET在 QML (JS) 中完美读取,但 my 却不能Q_OBJECT?
在 Ubuntu 14.04 上运行 Qt 5.8.0。
QVariantMap我正在尝试将对象列表 ( ) 返回到 QML。我现在保持简单,没有指针等......只是对象的副本。
struct Blob
{
Q_GADGET
Q_PROPERTY(QString uuid MEMBER uuid_ CONSTANT)
Q_PROPERTY(QVector3D centroid MEMBER centroid_)
// ...
Blob() {};
~Blob() = default;
Blob(const Blob& blob);
};
Q_DECLARE_METATYPE(Blob)
Run Code Online (Sandbox Code Playgroud)
上有一堆QString和QVector3D成员Blob。
在 main.cpp 中,我还注册了类型:
qmlRegisterType<Blob>("matt", 1, 0, "Blob");
Run Code Online (Sandbox Code Playgroud)
然后我的 JS 代码就能够毫无问题地读取对象上的所有属性(for 循环迭代它们)。
但如果我使用Q_OBJECT
struct Blob : public QObject
{
Q_OBJECT
Q_PROPERTY(QString uuid MEMBER uuid_ …Run Code Online (Sandbox Code Playgroud) 在我必须处理的一些Fortran 77代码中,有一些指针以非常奇怪的方式声明,
pointer (iuu , uu ), (ivv , vv ),
$ (it , t ), (iq , q ), (ips , ps ),
$ (ittm , ttm ), (itqm , tqm ), (ipsm , psm ),
Run Code Online (Sandbox Code Playgroud)
这里的括号是什么意思?什么?
我不确定我应该如何将Symfony的部分内容提供给Angular.
我在想我应该在Symfony中设置路由,然后让控制器输出文件?
我不确定如何简单地从控制器输出一个文件(即没有树枝的东西,没有真正渲染任何东西等).这个方法会正确缓存它吗?
例如,如果我想要角度下载partials/button.html,我应该设置如下路线:
partials:
pattern: /web/partials/{partial}
defaults: { _controller: AcmeWebBundle:Partials:show, _format: html }
Run Code Online (Sandbox Code Playgroud)
然后,在我的控制器中,
...
public function showAction() {
return file_get_contents(' ... path to file ...');
}
....
Run Code Online (Sandbox Code Playgroud)
这显然不起作用..我不知道如何输出一个直接的文件,而不通过树枝.或者也许我所有的部分应该只是twig文件(只是没有任何树枝的东西)?
为什么我无法访问数据类上的公共成员?
在我的测试 Android Kotlin/NDK 应用程序中,GetFloatField正在报告
“foo_model”引用的 JVM 对象属于“Class”类型,它无权访问“Foo”中声明的字段“float a”。
Class<Foo>是我用所有公共成员定义的数据类。
我是 Kotlin 新手,所以这个应用程序只是我学习如何在本机层之间传递自定义结构的一个练习。
MainActivity.kt
package com.example.structtest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
public data class Foo(var a: Float = 3.14f, var b: Int = 10)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var f = Foo(3.14f, 10)
var dFoo = doubleFoo(f)
sample_text.text = "foo.a = ${dFoo.a}, foo.b=${dFoo.b}"
}
external fun doubleFoo(_foo : Foo): Foo
companion object {
// Used to load the …Run Code Online (Sandbox Code Playgroud) 我环顾四周,虽然有很多EXC_BAD_ACCESS问题,但它们都没有帮助.
我正在使用Mountain Lion(我认为OSX 10.8?)和PGI 12.
我似乎无法从C调用fortran函数,我写了一个简化的案例,似乎我无法传递整数.
我的fortran功能是:
1 integer function smallFortran(a) result(res) bind(c,name='smallFortran_')
2 !integer function smallFortran(a) result(res)
3
4 use ISO_C_BINDING
5 implicit none
6
7 integer(kind=c_int), intent(IN) :: a
8 !integer, intent(IN) :: a
9
10 print *,'A = ', a
11 res = a;
12
13 endfunction smallFortran
Run Code Online (Sandbox Code Playgroud)
我的C函数是,
int main() {
int ier=7;
ier = smallFortran_(8);
}
Run Code Online (Sandbox Code Playgroud)
建立它..
matt@pontus:diffFst$ make
pgcc -c cDoDiffFst.c
PGC-W-0267-#warning -- "Unsupported compiler detected" (/usr/include/sys/cdefs.h: 81)
PGC/x86-64 OSX 12.9-0: compilation completed with …Run Code Online (Sandbox Code Playgroud) 是否有任何选项/标志/设置oh-my-zsh可以使其在设置提示时默认忽略未跟踪的文件?
我的许多存储库都包含未跟踪的文件,这会导致即使没有修改的文件,提示也会在分支名称后面显示小星号:
matt@khea /tmp/dotfiles [master *]
Run Code Online (Sandbox Code Playgroud)