c++11相关内容
我有以下 C++11 代码. #include 使用 IntType = unsigned long long;模板结构诠释 {};模板结构 is_int : std::false_type {};模板struct is_int>: std::true_type {};主函数(){static_ass
..
这不是一个重复的问题,因为提供的解决方案不适用于我的编译器.我正在尝试编译并运行以下示例 来自这个问题. #include #include int main(int, char **){std::thread tt([](){ std::cout
..
我正在试验 C++0x 线程,部分在 gcc 4.5 中实现,但我遇到了一个我无法理解的问题.让我们看看这段代码 #include #include 主函数(){std::cout
..
我知道标题有点混乱.让我用一点背景来澄清我的问题: 就执行时间而言,当我使用 -O1 标志与 -O0 标志进行编译时,我的程序的行为很奇怪.我知道 -O1 标志做了许多优化,例如 fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments (根据手册页超过 40).为了弄清楚是哪些优化导致了这种行为,我计划一次删除一个标志,然后编
..
如我所见:http://gcc.gnu.org/projects/cxx0x.html 不幸的是,gcc 还不支持 thread_local 关键字. 有没有其他选择?我不想使用 boost 库. 解决方案 gcc 编译器有一个存储类 __thread 可能足够接近. http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Loca
..
我在 g++ (GCC) 4.7.2 上遇到编译错误,但在尝试 std::vector::push_back 时却没有代码> 不可复制(私有复制构造函数)但可移动的对象.对我来说,我的示例看起来与 SO 和其他地方的许多其他示例相同.错误消息使它看起来像结构不是“直接可构造"的问题 - 我不知道这意味着什么,所以我非常不确定为什么对象需要“直接构造"才能被推回. #include
..
我编写了一个简单的程序来尝试在标准库容器中就地创建对象.这是我写的: #include #include AB类{上市:显式 AB(int n);AB(const AB& other) = 删除;AB(AB&&其他);AB&运算符=(常量 AB& 其他)= 删除;AB&运算符=(AB&&其他)=默认;私人的:诠释我;};AB::AB(int n): i(n){
..
我正在尝试编译一些我在 Linux 中编写的软件,这些软件在我的 Mac 上使用了一些新奇的 C++0x 功能.我使用 MacPorts 安装 gcc45 包,它给了我/opt/local/bin/g++-mp-4.5,但是这个编译器不想编译 中的任何东西.例如我尝试编译: //test.cpp#include 主函数(){标准::线程 x;返回0;} 然后得到:
..
AAA 级 {上市:AAA() {}AAA(const AAA&) {}};BBB类{上市:BBB() {}运营商 AAA() { AAA a;返回一个;}};int main() {BBB 乙;AAA a = {b};} 上面的代码可以在g++和vc++上编译,但不是clang++. 传统语法 AAA a = b; 在所有三个上都可以编译. AAA 级 {};BBB类{上市:BBB() {
..
根据this question的回答和评论,当引用变量被值捕获时,lambda对象应该制作被引用对象的副本,而不是引用本身.但是,GCC 似乎没有这样做. 使用以下测试: #include #include 使用 std::cout;使用 std::endl;int main(int argc, char** argv){诠释 i = 10;诠释&i
..
templateconstexpr 内联T getClamped(const T& mValue, const T& mMin, const T& mMax){断言(mMin
..
以下示例将无法使用 g++ 4.8.2 进行编译: #include #include 使用命名空间标准;int main() {向量v {1, 2, 3};v.erase(v.cbegin());//编译器报错返回0;} 编译器会这样说.(它的可读性不是很好,但它抱怨 vector::const_iterator 和 vector::
..
为了以 C++11 标准编译程序,我们需要做: g++ -std=c++11 myProgram.cpp -o myProgramExec 但是有没有可能我可以将 g++ 的默认标准设置为 C++11,这样我就不必一次又一次地提及这个选项虽然我也可以在我的 .bashrc 中为此添加一个别名: 别名 g++='g++ -std=c++11'; 但我想知道是否有比这更好的方法.是否有任何可
..
可能重复: 我可以在 Xcode 中使用 C++11 吗? 似乎 xcode 4 包含旧版本的 clang 和 gcc.我可以升级 gcc 或 clang 并将它们与 xcode 4 一起使用吗?我想使用 gcc >= 4.6 或最新的 clang. 我的主要目标是在 mac osx lion 上编程 C++ 时,能够尽可能多地使用 C++11 中的新功能,因此如果需要,放弃 xco
..
我正在使用命令: g++ --std=c++11 -fPIC -Iincludes parser.cpp lib/main-parser.o lib/lib.a 在 Debian 9 上编译 C++ 程序.但我收到以下错误消息:/usr/bin/ld: lib/lib.a(csdocument.o): 重定位 R_X86_64_32 反对 '.rodata' 制作共享对象时不能使用;使用
..
我刚开始使用 MinGW for Windows.尝试使用 创建可执行文件时 g++ a.cpp -o a.exe -std=c++14 下面的代码: #include 使用命名空间标准;主函数(){字符串 x = to_string(123);返回0;} 我收到以下错误: C:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../..
..
C++11 模式下的 GCC 4.7 让我定义了一个采用 lambda 的函数,有两种不同的方式: //按值模板void foo(FunctorT f) {/* 东西 */} 还有: //通过右值引用模板void foo(FunctorT&& f) {/* 东西 */} 但不是: //引用模板void foo(Fun
..
以下代码使用g++ 4.8.1编译成功: int main(){整数(*)();} 它看起来像一个简单的函数指针声明: int(*f)(); 它不能用 clang 3.4 和 vc++ 2013 编译. 它是编译器错误还是标准的黑暗地方之一? 用 g++ 4.8.1 编译好的类似奇怪代码片段列表(更新): int(*)(); int(*); int(*){};
..
我有一个带有以下声明的类: 类 IcoSphere{[...]私人的:int _addVertex(const glm::vec3 &p);int addVertex(glm::vec3 p);int addVertex(const glm::vec3 &&p);[...]}; 然后,我像这样调用“addVertex": IcoSphere 球体;双 t = (1.0 +sqrt(5.0))
..
考虑以下声明: #include 结构 X{//std::arrayarr={假,假,假};布尔 brr[3]={假,假,假};}; 按原样,它可以通过 g++ 5.2 正常编译.但是如果我取消注释 std::array,我会得到一个错误: test.cpp:5:46: 错误:数组必须用大括号括起来的初始化程序初始化std::arrayarr={假,假,假};^
..