静态初始值设定项中使用的lambda表达式的行为
神奇地依赖于lambda体内初始化的局部变量
int static_1 =
[=]() -> int {
int k_=7;// if this statement presents, the lambda doesn't work (static_1 remains uninitialized)
return 5;
} ();
int static_2=
[=]() -> int {
我是新使用c++11特性的人,也尝试使用SDL_Widget-2 lib为我的项目构建一个简单的Gui。但我陷入了这个问题:
#include "sdl-widgets.h"
class Builder
{
public:
Builder():top_win(nullptr)
,but(nullptr)
{
top_win=new TopWin("Hello",Rect(100,100,120,100),0,0,false,
[
我厌倦了写std::shared_ptr和std::make_shared,在考虑之后,我想找到一个更短的语法
对于我的短期科学项目,我通常只需要非常快速地生成代码,并且更喜欢紧凑的语法——只是不要对此进行评论;)
所以我想:
#define PTR(X) std::shared_ptr<X>
#define NEW(X) std::make_shared<X>
PTR(MyClass) p = NEW(MyClass)(args)
template<typen
我想知道用另一个更小的std::vector替换(覆盖)给定std::vector“输入”的一部分的正确方法是什么?
我不需要保持原始向量的其余部分不变。
另外,我不需要麻烦什么已经在原始向量和
我不需要再保留更小的向量了
假设我有这个:
std::vector<int> input = { 0, 0, 1, 1, 2, 22, 3, 33, 99 };
std::vector<int> a = { 1, 2, 3 };
std::vector<int> b
如何在std::forward\u列表的上下文中实现before\u begin方法
我试过这样的方法:
template <class _Tp>
typename forward_list<_Tp>::iterator forward_list<_Tp>::before_begin() NOEXCEPT {
return forward_list_iterator<_Tp>(new forward_list_node<_Tp>(_
我的代码使用VS 2013 Pro在PC#1上编译并链接得很好。它无法使用VS 2013社区版在PC#2上链接。失败是来自Advapi32.lib的三个未解析外部变量——CryptAcquireContextW、CryptReleaseContext和CryptGenRandom
这导致了几个关键问题:
为什么VS 2013在链接器输入线上找不到库时不向您发出警告
为什么社区版中没有Advapi32.lib
如何解决这个问题
谢谢。通常需要为目标Windows版本安装Windows SDK。安装
下面的代码说明了我的问题
#include <type_traits>
#include <limits>
#include <cstdint>
#include <boost/mpl/if.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
/////////////////////////////////////////////
标签: C++11
move-constructor
我用以下方式为类编写了移动构造函数:
class A
{
std::vector<double> m;
A(A&& other)
: m{other.m}
{
}
}
或者我应该完全做些别的事情?第二个代码片段是移动other.m的正确方法,因为它是一个左值,需要转换为std::vector移动构造函数的r值引用才能生效
尽管如此,在这个非常具体的示例中,只需编写
A(A&& rhs) = defa
由于某些原因,checkCollision()中的编译器将args1和args2作为未声明的标识符发出警报args1和args2只是占位符。你可以省略它们。还要注意,类模板的参数也是模板,而不是类型。当CollisionManager被实例化时,args1和args2甚至不绑定到任何类型
更新:
在我看来,你想写这样的东西:
template <template <class ...args1> class T1, template <class ...args2>
我在opencv3.0.0-alpha下尝试示例代码时遇到以下错误:
ps@hp-pavilion:~/cvit/opencv_projects$ make stitch
g++ `pkg-config --cflags opencv` -o stitch stitch.cpp `pkg-config --libs opencv`
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_st
标签: C++11
weak-ptrmake-shared
我在使用std::weak_ptr和std::make_shared时偶然发现了这种行为,我觉得有点奇怪。我正在使用C++11
#include <iostream>
#include <memory>
int main()
{
std::weak_ptr<int> weak;
std::shared_ptr<int> shared {std::make_shared<int>(42)};
weak = shared;
有人知道如何在Gimpel flexelint中启用C++11支持吗
要实现与GCC编译器中选项-std=c++11相同的功能,可以使用-A(c++11)标志将其打开
打开所需标准的通用方法是:-a(C++年)
我正在学习一门关于现代C++的课程。我得到一个显式唯一句柄函数的错误。它说m_值是未知的覆盖说明符?我列出了上面的值,它显示仍然在变量空间中
explicit unique_handle(pointer value = Traits::invalid()) throw()
m_value { value }
{
}
在m_值之前缺少冒号“:”,表示初始化器列表的开始:
explicit unique_handle(pointer value = Trait
我们可以对类似向量的数组执行此操作,还是必须使用迭代器。我想要的是保持指向数组元素的指针。我可以想出几种方法来获得指向向量元素的指针
vector<int>vec(N,0);
int* ptr=vec;
或
但是,除非您知道自己在做什么,否则我不建议使用指针访问向量的元素。使用迭代器访问向量的元素。宁愿使用指针而不是迭代器,没有什么好处,也没有什么损失。你不能只保留元素的整数索引吗?你的意思是int*ptr=vec(0);不,我的意思是如果你想要一个指向第一个元素的“指针”,你
我试图解析以下字符串并提取括号内的部分
此字符串失败:
_FIND('Something', '')_
Should return
part1 = 'Something'
part2 = ''
我尝试添加一个像这样的“空”字符串词素,但它不起作用
quoted_string %= lexeme['\'' >> +(char_ - '\'') >> '\''];
empty_quoted_string %= lexeme['\'' >&
我有这个问题,我不能在Windows 10上编译我的SFML程序,我有Linux,在Linux上我没有问题,但是在Windows中,我不知道如何将SFML库与VSCode链接。请帮帮我。首先,VSCode只是一个类似atom、Sublime等的编辑器。
所以你需要一个编译器。
在Windows下编译SFML的最简单方法是使用Visual Studio。
如果你想拥有类似Linux的体验,你应该使用MinGW。
MinGW是GNU的Windows端口 请说得更具体些。发布您尝试过的命令/代码,并在
我有一个基类(我想用它来模拟接口)
模板
阶级基础
{
公众:
虚拟SomeTemplatedClass GetTheObject()=0;
}
显然是一个派生类
template<typename TType>
class Derived : public Base<TType>
{
public:
virtual SomeTemplatedClass<TType> GetTheObject() = 0;
}
模板
派生类:公共基
{
公众:
虚
给定以下代码:
我得到一个错误:
prog.cpp:20:24: error: ‘C’ is not a template
using collection = C<T>;
^
prog.cpp: In function ‘int main()’:
prog.cpp:27:43: error: type/value mismatch at argument 1 in template parameter list for ‘t
标签: C++11
variadic-macrosboost-preprocessorboost-formatgcc4.4
我正在尝试编写一个日志函数,该函数接受可变参数列表并在安全区域打印。
vprintf似乎是一个显而易见的答案,但我似乎找不到一种安全的方法来处理格式字符串需要的参数多于提供的参数
另外,如果我能重新安排参数的打印顺序,那将非常好。
第二个要求是boost::format,这似乎正是我想要的,只是它不接受va_列表作为输入
我已经做了一些广泛的搜索,我能得到的最接近的是这个解决方案:
不幸的是,我仅限于一个特定的gcc版本,它似乎不包括std::initializer\u列表
在我的搜索中,我偶
我试图使用Eigen3生成一个2d浮点矩阵(num\u samples,num\u ranges),这样每一列都是一个连续间隔的范围[0,num\u samples)就像[0,1,2…num\u samples-1]
我目前正在通过使用std::iota创建一个类似的2dstd::vector,然后将其转换为特征2d矩阵来实现这一点
在Eigen中有没有更快更简单的方法呢?如果我理解正确,你希望矩阵是这样的
0
1
2
三三三
对于4x4矩阵。为此,您可以使用LinSpaced(对于单个列)和r
我希望这不会成为一个“复制品”,因为有太多关于(纯)虚拟破坏结构的问题(是的,我知道)
我想用一堆方法构建一个“接口”(>抽象类),这些方法可以重新实现,但不需要。所以我喜欢:
class IBase
{
public:
virtual bool doThis() { return true; }
virtual bool doThat() { return true; }
}
我给出了一些实现,一些使用doThis一些使用doThat。这就是为什么“接口”方法只是虚拟的而不是纯粹的。
标签: C++11
c++14googletest
我想实现这样的目标:
class MyTest: public ::testing::Test {
public:
const int myConstInt = 23;
}
TEST_F(MyTest, MyTest1) {... use myConstInt ...}
但回想一下EfficiveCPP的第4项,初始化不是以这种方式保证的,并且有可能出现未定义的行为
假设以上是方法1
我可以想出另外两种方法来实现这一点:
方法2:使用MyTest构造函数初始化MyConstr列
标签: C++11
std-functionstdbind
有两类服务器和客户端。客户端在服务器上调用方法datas()。服务器使用datacallback()用数据列表响应调用者
调用serverobj.datas()时,我在函数clientfun2中看到编译时错误。请帮我修一下
#include <iostream>
#include <functional>
#include <memory>
#include <string>
#include <vector>
enum Status
在boost::asio::tcp中,我可以使用boost::asio::read只读取tcp套接字的一部分
boost::system::error_code error;
boost::asio::streambuf len_buffer;
size_t n = boost::asio::read(tcp_socket, len_buffer, boost::asio::transfer_exactly(1), error);
但是boost::asio::read函数不适用于udp::s
我有以下结构:
USTRUCT(BlueprintType)
struct FBaseCreateEditVariable {
GENERATED_USTRUCT_BODY()
public:
FBaseCreateEditVariable() {}
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "variableName"))
FString variableName
我只是试图构建一些涉及泛型迭代器类型的东西,特别是一些链接迭代器的东西,但是我不能取消对迭代器的引用。MVE:
#include <iterator>
#include <iterator>
#include <vector>
int main() {
std::vector<int> a = {1};
std::iterator<std::random_access_iterator_tag, int> my_it
你好,我是业余爱好者。我被基于范围的循环卡住了。
我知道如何使用这个:
std::vector<ExampleClass> vec;
2.
谢谢。视情况而定
第一个为每个循环循环提供实际指针的副本。
因此:
指针指向ExampleClass对象所在内存中的地址
通过使用*x
更改指针的指向地址将不会在for循环范围之外产生任何影响
第二个函数为您提供对存储在向量的实际元素中的指针的引用。
因此:
您可以执行与第一个选项相同的操作
和您可以让指针指向内存中的新地址,这也将在fo
我使用functional将函数指针传递给函数,并使用构造函数初始化将其保存在局部变量中供以后使用。如何为参数指定默认值
例如:
function<void()> BEGINFILE;
somefunct(function<void()> BEGINFILE): BEGINFILE(BEGINFILE) {}
函数BEGINFILE;
somefunct(函数beginfle):beginfle(beginfle){}
但我似乎做不到:
void nullfunct(
标签: C++11
variadic-templatestemplate-meta-programmingtypelist
我正在尝试实现loki类型列表的可变模板包装器
合并两个loki样式的类型列表很容易,但我在合并可变模板样式时遇到了问题
这是我的实现(简化,没有推回,索引,…,方法)
模板
结构dl32TypeList;
模板
结构dl32TypeList
{
静态常量unsigned int size=sizeof…(TAIL)+1;
使用value=dl32Loki_like_类型列表;
};
模板
结构dl32TypeList
{
使用value=dl32NoType;
静态常量unsignedint
如果套接字上有async_read,则应该有一个io_service的内部线程来检查套接字的状态。从另一个线程调用socket.close()安全吗(可能是在运行io\u服务的单独处理程序时)
我的意思是,即使我可以保证我的处理程序也不会同时使用asiosocket,它足够好吗(当考虑到io\U服务的内部线程时)
更新:
我在一个堆叠的协同程序中使用async\u read。与的底部的示例非常相似,只是我有一个额外的函数调用层,使用yield\u context。在该示例中,如果我在my_str
我正在尝试使用移动语义(只是一个实验)。
这是我的密码:
class MyClass {
public:
MyClass(size_t c): count(c) {
data = new int[count];
}
MyClass( MyClass&& src) : count(src.count) {
data = src.data;
src.count = 0;
src.data =
我不确定这为什么不起作用,但这是我的错误消息:
错误]与“操作员!=”不匹配(操作数类型为'std::string{aka std::basic_string}'和'const int')
编辑:上述问题已得到解决。但是,目前的问题是多余的,***,并且句子中的元音没有去除,而不仅仅是句子的第一个单词
#include <iostream>
#include <string>
using namespace std;
void removeVowel(string&a
我正在写一个小数学库(出于兴趣,心中没有特别的目标),我遇到了一点困难。我有一个新增的类,看起来像:
template <class ... Functions>
struct Addition
{
std::tuple<Functions...> functions;
//...
};
模板
结构加法
{
std::元组函数;
//...
};
我想为这个类实现操作符==。简单地返回functions=
只是在谷歌搜索libuv时遇到的。它看起来非常有特色,但我还没有找到任何可靠的评论或基准(事实上,这似乎是关于LibSourcey的堆栈溢出的第一篇文章)
还有人对这个框架有经验吗?感谢您对LibSourcey的兴趣!作为维护人员,我可以说该库仍在积极开发中。目前有许多初创公司在他们的专有代码中使用它——也许还有一些开源代码——因此它将继续开发,并始终保持开源
由于它在'14年是开源的,它还没有获得大量的开源采用,可能因为它从未被宣传过,已经有了一些很好的替代品,如boost,但希望随着时间的推
标签: C++11
unionsstrict-aliasing
如果您知道两个部分不重叠,那么使用联合体的两个部分可以吗?就像在这个例子中,可以同时使用buf[31]和ps吗
struct PtrSize {
const char *data;
size_t size;
};
class SmallStringOrNot {
union {
PtrSize ps;
char buf[32];
} pb;
public:
bool IsSmallString() const {
return pb.bu
当我看到一些奇怪的东西时,我正在胡闹。考虑以下功能:
#include <algorithm>
#include <cstdlib>
#include <functional>
float dot(float src1[], float src2[], int size) {
float* vecmul = static_cast<float*>(malloc(size * sizeof (float)));
float dotprod
是c++11标准下的以下未定义行为:
(正在尝试获取字符串的内部缓冲区地址)
例如,当s为空时
我知道我们有c_str(),data(),但无论如何
注
这来自于与某人的一场辩论,这并不是为了推广C++11中的黑客编码,代码定义良好,但可能不会达到预期效果。根据21.4.5/2,确切的影响为:
返回:*(begin()+pos)如果pos
当我编译以下包含C++11设计的代码时,会出现错误-它不编译。我尝试过使用不同的标志,但没有找到解决方案
我的设置:CUDA 6.5,gcc 4.4.7
我无法更改设置。
我怎样才能使这项工作继续下去
#include <stdio.h>
#include <vector>
#include "KD_tree.h"
#include "KD_tree.cpp"
#include <iostream>
#include <algorithm>
#in
标签: C++11
function-templates
与必须由模板用户指定的类模板参数不同,函数模板参数由编译器推导。因此,一个自然的问题出现了:为什么要指定默认函数模板参数
我能想到的一个用法是,当我们想要强制一些函数模板参数而不需要指定所有参数时。然而,这似乎是一个极端的情况。还有其他情况吗?这可能是部分答案。我想到的一个用途是,当我们有一个模板参数,它在函数的参数列表中不作为类型出现,因此无法推断。为模板参数提供默认参数可能非常合理。n.m.的上述评论为这种用法提供了一个很好的例子 示例:
template <typename Y,
我想创建一个方法,该方法可以告诉我是否可以重试异常。例外情况来自第三方库。所以我有这样的想法:
bool isRetryable ( std::exception_ptr ex) {
try {
if(ex) {
std::rethrow_exception (ex);
}
return true;
} catch (const ExceptionA& ex) {
return tru
标签: C++11
staticheader-filesconstexpr
我有一个头文件test.hxx,它将包含在多个翻译单元中。头文件如下所示:
namespace program_exec
{
static constexpr int DEFAULT_VAL = 0;
static constexpr char *name = "proc_exec";
}
我已将此头文件包含在多个翻译单元(*.cxx)中,它工作正常
但是删除constepr char*的静态前面会导致链接错误,即,如果我将static constepr char*name=“proc_ex
我尝试创建用于输出计时结果的函数,并从预定义字符串调用任何流:
#include <cstring>
#include <map>
#include <fstream>
using namespace std;
int main(v
鉴于:
模板
结构A;
模板
结构B{};
我可以写:
template <class T, class P>
struct A;
template <class P>
struct B {};
模板
结构A:B{};
但这很乏味,因为我必须重新定义构造函数。有没有一种方法可以写出类似于:
template <class P>
struct A<int,P> : B<P> {};
模板
使用A=B;
以下是您应该做的:
te
我正在慢慢地设计我的“游戏”中涉及的类的结构,我想知道SDL_渲染器是否应该是一个公共资源,跨多个线程同步,或者每个不同的对象应该有自己的渲染器(例如,每个敌人都引用自己的渲染器在窗口中出现)。如有任何建议,请给予解释
提前谢谢。只需一个渲染器
正如keltar指出的那样,API并不是这样使用的。但这不是API的缺陷。GPU所做的底层工作与C API中所做的“呈现这个和那个”调用非常不同,因此并发性不会像那样转换为1:1。从某种意义上说,CPU主要只是告诉GPU该做什么,同时告诉它两次这些事情并
然而,对于gcc 7.2.1和clang-900.0.37,代码都是可运行的,这本书错了吗
以下是完整的测试代码:
#include <iostream>
struct Y {
Y() { std::cout << "Y()" << std::endl; }
Y(const Y&) { std::cout << "Y(const Y&)" << std::endl; }
//Y(Y&&a
标签: C++11
garbage-collection
我在看比亚恩·斯特劳斯塔普的演讲
在44:26中,他提到“C++11指定了一个GC接口”
请问什么是接口,如何实现?
任何更详细的在线介绍,或一些示例代码来演示它吗?Stroustrup在他的文章中扩展了这一讨论,问题是GC的使用是可选的,库供应商可以自由实施一个或不实施:
垃圾收集(未引用区域的自动回收)
在C++中内存为可选< /强>;也就是说,垃圾收集器不是
强制执行的一部分。但是,C++11提供了
定义如果使用GC和ABI(应用程序),GC可以做什么
二进制接口)以帮助控制其操作
指针和
您可以使用什么代码来确保输入的时间格式正确
cout<<"What is the time of the event?" << endl;
cin.get();
getline(cin, eventTime);
// eventime is a string
试试这样的东西:
bool checkIfValidTime(std::string const& input) {
std::regex validTime("([0-9]|0[0-9]|1[
c++11/arm编译器v6.9/keil5
我有2个类(class1,class2)-我没有从class1向class2发送函数地址,但我不能-我必须定义我的函数静态-但我不想这样做
// ---------------------------- CLASS1.CPP ----------------------------
void CLASS1::ControlTransfer(uint8_t Physical_EPn, uint8_t bEPStatus) {
// ...
}
vo
我有一个特征::矩阵和我有一个函数,只需要一个3x3切片,并修改它
void ModifyBlock(Eigen::Matrix<double, 3, 3> & block){
// A stupid example
block += Eigen::Matrix<double, 3, 3>::Identity();
}
void ModifyBlock(特征::矩阵和块){
//愚蠢的例子
块+=特征::矩阵::标识();
}
无法传递原始矩阵的切
我有以下课程:
class MyPoint
{
public:
// Constructor
MyPoint(double, double, double);
// Destructor
virtual ~MyPoint(){};
protected:
private:
double x;
double y;
double z;
};
我想重
1 2 3 4 5 6 ...
下一页 最后一页 共 50 页