草庐IT

std=c++11

全部标签

c++ - 宏使用 GCC 编译但不使用 VS11

我编写了以下代码来帮助将我的模板函数限制为某些类型,并在使用其他类型时显示有意义的错误消息。我从stackoverflow中的另一个问题中得到了这个想法,我仍然无法对此发表评论,因为我是新来的。该宏在linuxGCC下可以完美编译,但不能在VisualStudio2012下编译。#include#include#include#include#include#defineISALLOWED(DerivedT)(std::is_same::value)||(std::is_base_of::value)#defineFE_1(WHAT,X)WHAT(X)#defineFE_2(WHAT,

c++ - 为什么我不能按值将右值 std::stringstream 传递给函数?

为什么这段代码不能编译?#includevoidf(std::stringstream){}intmain(){f(std::stringstream{});}我收到这个错误:error:useofdeletedfunction‘std::basic_stringstream::basic_stringstream(conststd::basic_stringstream&)’f(std::stringstream{});^如果我将std::stringstream替换为另一种不可复制的类型,它就可以正常工作。这不应该使用stringstream的move构造函数吗?

c++ - 如何在 HLSL DirectX11 C++ 中使用 Texture2DArray

我只是想知道如何在HLSL中使用Texture2DArray。我正在尝试实现一个模型加载器,其中模型具有不同数量的纹理。目前,我的HLSL使用大小为2的Texture2D(纹理和普通纹理),但由于我的模型具有不同数量的纹理,我希望使用Texture2DArray但不知道从哪里开始。我一直试图在互联网上找到示例等,但没有运气:(我加载了编译为“ID3D11ShaderResourceView*”的纹理,所以我应该创建一个变量ID3D11ShaderResourceView**,我创建一个指向纹理的点数组,然后将其传递给着色器或什么?有什么帮助吗? 最佳答案

c++ - 为什么 std::copy 或 std::swap 不需要 <algorithm>?

根据这个cplusplus.com页,std::copy在header,原样std::swap然而这有效:#include//std::cout#include//std::vector#include//std::ostream_iterator()#include//rand(),srand()//NOTincludingintmain(){srand(time(NULL));constintSIZE=10;std::vectorvec;for(inti=0;i(std::cout,""));std::cout我唯一能想到的是它们是由导出的也...但是为什么我们需要标题吗?

c++ - 使用 make_shared<std::thread> 创建 shared_ptr<std::thread> 的实例

考虑以下代码:classA{....shared_ptrmThread;voidStep();voidLaunchTrhead();}voidA::LaunchThread(){...mThread=make_shared(Step);//Thislinegivesanerror...}voidA::Step(){...}我正在尝试初始化共享指针mThread以便它调用函数Step。但是,编译器给我错误“类型引用的无效初始化...来自类型‘未解析的重载函数类型’的表达式”。显然我在做一些愚蠢的事情,但我不能指责它。有人可以帮忙吗?提前致谢! 最佳答案

c++ - 使用 vim 作为 c++11 IDE

我已经在Vim中设置我的开发环境有一段时间了。由于我所有的项目都在C++11中,我发现了一些插件让我的生活更轻松,几乎与Intellij和Java时代一样好。但是,仍然缺少一些东西。我想念的主要功能是重构实用程序(跨项目重命名、将代码重构为函数/类、删除类,...)。关于如何在vim中获得此类功能的任何建议?我正在使用以下插件:gmarik/vundleValloric/你完成我一个.vimwincent/命令-TDoxygenToolkit.vimscrooloose/nerdtreegodlygeek/表格tpope/vim敏感tpope/vim-unimpairedtpope/v

c++ - 'unused' 的初始化被 'goto label' 跳过 - 为什么我为 std::string 而不是为 int 获取它?

我在某些代码中遇到了这个错误,经过一些试验后我偶然发现了这个怪异之处——我为std::string得到了它,但没有为int得到它。对于std::string我得到errorC2362:initializationof'unused'isskippedby'gotolabel':{gotolabel;std::stringunused;label:;}对于int我没有收到任何错误,但是:{gotolabel;intunused=10;label:;}为什么不同?是因为std::string有一个非平凡的析构函数吗? 最佳答案 这包含在

c++ - 在 C++11 "foreach"语句中是否有任何(方便的)方法来检索当前迭代#?

我想知道是否有可能以某种方式从C++11foreach语句中提取当前迭代次数。在这样的代码中:for(auto&i:vect)if(i==0)zero_value_index=/*hereIwantmyindex*/;我找不到其他方法,只能使用老式的for和inti轻松获取我的索引。想法? 最佳答案 我不知道,你可以计算迭代次数:inti=0;for(auto&el:container){if(el==0)zero_value_index=i;++i;} 关于c++-在C++11"for

c++ - <cstdint> 与 std::size_t 类型

从我对boost的窥视中和libstdc++,库通常使用std::size_t和std::ssize_t每当事先不知道无符号/有符号索引的上限/下限时。我的问题是:为什么不使用uintmax_t来自而不是std::size_t和intmax_t而不是std::ssize_t? 最佳答案 前者是C++标准的一部分,后者不是。更准确地说,cstdintheader是最近才引入的(在C++11中)。这是因为stdint.h本身是C99的一部分,比C++98更新。 关于c++-与std::siz

c++ - std::list 是否保证项目永远不会移动到不同的内存位置?

这个问题在这里已经有了答案:IteratorinvalidationrulesforC++containers(6个答案)关闭8年前。是否保证一旦std::list或std::forward_list项被分配,它将保留在相同的内存位置(地址)直到被销毁?当然,复制列表本身除外。