小编Tim*_*ine的帖子

void_t"可以实现概念"吗?

我正在观看Walter Brown的CppCon2014关于模板元编程的第二部分,在此期间他讨论了他的新颖void_t<>结构的用法.在他的演讲中,Peter Sommerlad问他一个我不太明白的问题.(链接直接转到问题,正在讨论的代码直接发生在那之前)

索默拉德问道

沃尔特,这是否意味着我们现在实际上可以实现概念精简版?

沃尔特回应了什么

哦耶!我已经完成了......它没有完全相同的语法.

我理解这个交换是关于Concepts Lite的.这种模式真的那么多才多艺吗?无论出于何种原因,我都没有看到它.有人可以解释(或描绘)这样的事情会是什么样子?这是关于enable_if和定义特征,还是提问者指的是什么?

void_t模板定义如下:

template<class ...> using void_t = void;
Run Code Online (Sandbox Code Playgroud)

然后他使用它来检测类型语句是否格式正确,使用它来实现is_copy_assignable类型特征:

//helper type
template<class T>
using copy_assignment_t
= decltype(declval<T&>() = declval<T const&>());

//base case template
template<class T, class=void>
struct is_copy_assignable : std::false_type {};

//SFINAE version only for types where copy_assignment_t<T> is well-formed.
template<class T>
struct is_copy_assignable<T, void_t<copy_assignment_t<T>>> 
: std::is_same<copy_assignment_t<T>,T&> {};
Run Code Online (Sandbox Code Playgroud)

由于这个话题,我理解这个例子是如何工作的,但是我没有看到我们如何从这里得到像Concepts Lite这样的东西.

c++ templates template-meta-programming c++11 c++-concepts

68
推荐指数
1
解决办法
7055
查看次数

急于加载ormlite servicestack

这是实体框架:

var department = _context.Departments
                .Include(dep => dep.Employees.Select(emp => emp.ContactTypes))
                .SingleOrDefault(d => d.Id == departmentId);
Run Code Online (Sandbox Code Playgroud)

在这里,我希望返回一个部门,其中包含所有相关员工以及每个员工的所有联系类型.

这是ormlite servicestack:

我不知道.当我查看docu/samples时:https://github.com/ServiceStack/ServiceStack.OrmLite

他们写:

现在,Expression支持可以使用强类型API来满足大多数简单查询.对于任何更复杂的事情(例如,使用表连接的查询),您仍然可以轻松地回退到原始SQL查询,如下所示.

我已经看到有一个JoinSqlBuilder类,但我不认为它可以返回嵌套集合.

也许我想要的是不可能的,但也许我可以做一个妥协,比如让所有员工都参加部门会议.然后我记忆员工并获取某个employeeId的所有联系人类型.创建层次结构并分配列表仍然是我的工作.

但我希望有一个更短的解决方案.

什么也没关系,当查询但它可能看起来像返回一个具有3个平面属性的对象(动态?):Department,Employees,ContactTypes并为我的DTO分配thoese属性.

ormlite-servicestack

12
推荐指数
1
解决办法
733
查看次数

在C++/OpenGL中加载tga/bmp文件

我正在尝试加载tga/bmp文件.这很好,但最终结果如下:

在此输入图像描述

我正在尝试加载的图像如下所示:

在此输入图像描述

我正在使用的一些代码:

GLuint texture;
const char* filename = "/Users/Admin/Documents/Visual Studio 2013/Projects/OpenGL/OpenGL/image.tga";

unsigned char* data;
data = (unsigned char *) malloc(128 * 128 * 3);
FILE* f;
fopen_s(&f, filename, "rb");
fread(data, 128 * 128 * 3, 1, f);

glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
Run Code Online (Sandbox Code Playgroud)

有人知道我做错了什么吗?

c++ opengl image file loading

10
推荐指数
2
解决办法
2万
查看次数

我是否需要清理对file_exists的输入?

我似乎无法找到参考.我假设PHP函数file_exists在linux上使用系统调用,并且这些对于任何不包含\0字符的字符串都是安全的,但我想确定.

有没有人(最好是非轶事)有关此事的信息?如果我不先检查字符串,是否易受注射?

php sanitization

6
推荐指数
1
解决办法
687
查看次数

类方法的返回类型推导?C++ 1Y

是否允许c ++ 14中的成员函数返回类型推导,或仅适用于自由函数?

我问,因为我有点暗示它会起作用,但是在gcc 4.8.1中我得到一个内部编译器错误("在gen_type_die_with_usage中").我第一次遇到这样一个神秘的错误,所以我有点怀疑; 我知道他们从那时起就改变了规范.

为清楚起见,这对我有用:

auto foo() {return 5;}
Run Code Online (Sandbox Code Playgroud)

但这不是:

class Bar{
auto baz() {return 5;}
}
Run Code Online (Sandbox Code Playgroud)

标准草案允许这样做吗?

c++ gcc return-type-deduction c++14

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

黑莓 10:GNU STL

我正在尝试使用 Momentics IDE 2.0 版创建 BB10 级联项目,并且我需要该项目使用 GNU 标准库而不是 Dinkumware(因为我编译的外部库仅arm-unknown-nto-qnx8.0.0eabi-g++支持 gnu std)。

在 IDE 中,我已将“项目属性”->“C/C++ 构建/设置/运行时”更改为“C++ GNU,但有例外”。但是,当我使用我创建的静态库(.a 文件)运行一个简单的项目(仅包含一个包含构造函数、std::string对象、setter 和 getter(针对对象)以及相应的 cpp 文件的头文件)时,我得到当我这样做时出现分段错误:

testnamespace::testclass *object = new testnamespace::testclass();

std::string test = "Hello";
object->setText(test);

delete object;
Run Code Online (Sandbox Code Playgroud)

我认为出现此错误是因为该库是使用 gnu std 编译的,而该项目是使用 Dinkumware 编译的。

我验证了包含路径,我发现

C:\bbndk\target_10_1_0_428\qnx6\usr\include 
Run Code Online (Sandbox Code Playgroud)

包含在之前

C:\bbndk\target_10_1_0_428\qnx6\usr\include\c++\4.6.3
Run Code Online (Sandbox Code Playgroud)

另外,makefile 用于编译项目中的 cpp 文件的命令不是qcc -Vgcc_ntoarmv7le( qcc -V4.6.3,gcc_ntoarmv7le_gppgnu stl 的支持标志)。

难道我做错了什么?缺少某些配置?

我确实需要在我的 BlackBerry 项目中使用 GNU STD 而不是 Dinkumware,但我不知道该怎么做。

编辑:

我对我的项目进行了一些更改并修复了一些问题。

我将其添加到我的 .pro 文件中

QMAKE_CXX = qcc -V4.6.3,gcc_ntoarmv7le_gpp
QMAKE_CC = qcc …
Run Code Online (Sandbox Code Playgroud)

c++ qt stl gnu blackberry-10

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

STL按变量排序,然后按升序排序

我怎么能按字母顺序排序然后按int类中的变量排序?我如何组合它们,如果counter相同,它将按字母顺序返回?

// sort pages by its popularity

bool popularity(const Page &a, const Page &b) {
 return a.counter > b.counter;
}

// alphabetical sort

bool alphaSort(const Page &a, const Page &b) {
    return a.name < b.name;
}
// Combination?
sort(.begin(), .end(), ??)
Run Code Online (Sandbox Code Playgroud)

c++ sorting stl

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

左对齐powershell命令的输出

我正在运行以下命令,我想将输出对齐到左边...只是无法搞清楚:

基本上,这是为我提供特定目录的大小,它是正确对齐的.

Get-ChildItem c:\users\xxx\desktop -recurse | Measure-Object -property length -sum|Select-object @{Name="Total size GB "; Expression={$_.Sum / 1GB}} >> c:\users\xxx\desktop\pwr\bkp.txt

powershell powershell-2.0

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

Java修改地图内的关键对象

我遇到了JAVA地图的问题.我在地图中输入一个对象作为键.然后我修改了键,地图不再将对象视为地图的键.即使对象内部的键已相应修改.

我正在使用CoreLabelStanfordNLP 的对象,但它适用于我猜的一般情况.

Map <CoreLabel, String> myMap = new HashMap...
CoreLabel key = someCreatedCoreLabel
myMap.put(key, someString)
myMap.get(key) != null ----> TRUE
key.setValue("someValue");
myMap.get(key) != null ----> FALSE
Run Code Online (Sandbox Code Playgroud)

我希望我很清楚.问题是为什么最后一个陈述是假的?我不是一个非常有经验的程序员,但我希望它是真的.也许与CoreLabel物体有关?

我检查是否.equals()仍然存在,它确实存在

for(CoreLabel token: myMap.keySet()) {
     if(key.equals(token))
        System.out.println("OK");
}
Run Code Online (Sandbox Code Playgroud)

java map pass-by-reference pass-by-value stanford-nlp

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

无法理解C++中的枚举,它们实际上是什么?

我用C#编程的最后几年,现在我又回到了C++.在C#中,enums的行为如下:

enum myenum { a,b,c} 
myenum myinstance = myenum.a;
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

enum myenum { a,b,c}     
enum myenum2 { a,b,c} 

myenum myinstance = myenum.a;
Run Code Online (Sandbox Code Playgroud)

一切都会好的.

在C++中它不能编译,而且我现在不能使用a(b或者c)作为类名或其他任何东西,它似乎写作:

enum myenum { a, b };
Run Code Online (Sandbox Code Playgroud)

与声明全局int变量相同:

int a =0, b=1;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么C++的开发人员为枚举选择这种行为,以及枚举是什么?它是一种类型?或者只是编译器替换某些int声明的东西?

c++ enums

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