问题标签 [coliru]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3552 浏览

c++ - 编译器出错时显示“pi”符号

我在Coliru上测试了一些代码,我得到了一个奇怪的输出。我记下了代码,并可以用这段简单的代码重现它:

g++ 上的输出:

g++ 上的输出

铛:

铿锵的输出

例如,使用 just pi(没有地址)显示预期结果:

我试图在我的机器上使用 g++ 4.9.2 和其他网站重现这个,但我做不到。

这是这个网站上的一些错误,这些编译器的一些配置吗?

为什么只使用地址运算符(&)显示这个符号?

0 投票
1 回答
438 浏览

c++ - 为什么 coliru 会为 chrono::system_clock::now().time_since_epoch() 返回相同的值?

在 coliru 上测试别人的代码时,我注意到它std::chrono::system_clock::now().time_since_epoch()在多次运行时返回相同的值。我在coliru上使用 g++ 和 clang++ 测试了以下代码。

输出:

g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp && ./a.out

1433249917642594133

1433249917642674289

它在ideone上按预期工作,显然在我的电脑上工作。

有谁知道为什么 coliru 每次运行都返回相同的值?

0 投票
1 回答
474 浏览

c - 如何用 Coliru 编译多个文件?

明天我有一个公司的测试。我的文件必须易于使用 Coliru(网络编译器)编译:http ://coliru.stacked-crooked.com/

但这是我的问题:“如何在 Coliru 中使用多个文件?” 我阅读了问答,但没有成功。

这是我想测试的程序:

这是我的“Addition.c”文件:

如果有人可以向我解释如何使用 Coliru 编译多个文件,那就太棒了。谢谢

0 投票
1 回答
120 浏览

c++ - 存储在变量模板特化中的 Spirit-X3 解析器不适用于 Clang

我有一个可以工作的 Spirit-X3 解析器,它可以解析两个密切相关的语法来设置草稿和检查器的位置。我定义了两个变量模板特化作为语法的两种方言的解析器:

此代码编译并正确解析我在 Clangg++上的测试输入。

由于两个变量模板特化依赖于完全相同形式的模板参数,我想将它们合并到一个通用变量模板中:

这也为g++正确编译和解析。它也为 Clang 编译,但它只能正确解析我在Wandbox上的输入,而不是在Coliru上。在我自己的开发盒上,使用来自apt.llvm.org的 clang-3.8.0 ,我得到了与 Coliru 相同的错误行为。

问题:Clang 中是否存在变量模板专业化的错误?如何以与 Wandbox 相同的方式配置 Clang 以解决该错误?或者它是某种与 Spirit-X3 相关的错误?

0 投票
1 回答
1469 浏览

c++ - 如何在我的站点中使用在线 C++ 编译器

我想创建一个站点(或 wikibook 或 github 页面),其中包含可运行的 c++ 代码示例,非常类似于cppreference(显然在按钮中使用了coliruRun this code)。我正在尝试通过谷歌搜索自己,但每个教程都有太多的先决条件让我遵循。

是否有既定的最佳实践或易于使用的工具链?我认为jekyll + coliru是最好的组合,但我不知道从哪里开始。

我知道这个问题太宽泛了,但我什至不知道在哪里投入时间。以下任何一项都是一个很好的答案(优先顺序递减):

  • 我可以修改/调整的现有示例
  • 建立这样一个页面的教程
  • 我应该使用哪些工具的描述
  • 描述这样一个过程的书

感谢您的帮助或建议。


PS1:我想添加一个“Wandbox”标签,但显然它不存在

PS2:我知道有klipse,但对 c++ 的支持非常有限,所以这不是一个理想的解决方案

0 投票
1 回答
487 浏览

c++ - 为什么 Coliru 的 Clang 无法编译 vector::push_back?

看这里。 该程序非常平凡,例如:

诊断对我来说没有多大意义:

在 main.cpp:1 包含的文件中:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中矢量:60:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中位/stl_algobase.h:64:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中位/stl_pair.h:59:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中位/move.h:55:

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1061: 48: 错误: '_Tp' 没有引用一个值

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1059: 21:注意:在这里声明

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1061: 53:错误:_Up没有引用一个值

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1059: 35:注意:在这里声明

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1062: 5:错误:预期的类名

在 main.cpp:1 包含的文件中:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中矢量:63:

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized。 h:128:70:错误:没有指定value成员std::is_assignable<int &, int &&>

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized。 h:289:19:注意:在std::uninitialized_copy<std::move_iterator<int *>, int *>此处请求的函数模板特化的实例化中

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized。 h:310:19:注意:在std::__uninitialized_copy_a<std::move_iterator<int *>, int *, int> 此处请求的函数模板特化的实例化中

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/vector。 tcc:446:13:注意:在std::__uninitialized_move_if_noexcept_a<int *, int *, std::allocator<int> >此处请求的函数模板特化的实例化中

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/vector。 tcc:109:4:注意:在std::vector<int, std::allocator<int> >::_M_realloc_insert<int> 此处请求的函数模板特化的实例化中

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_vector。 h:1091:9:注意:在std::vector<int, std::allocator<int> >::emplace_back<int>此处请求的函数模板特化的实例化中

std::vector<int, std::allocator<int> >::push_backmain.cpp:7:9:注意:在此处请求的成员函数的实例化中

产生 4 个错误。

与 g++ 编译相同,没有任何问题。我真的无法查看 Coliru 的 Clang 包含的库头文件,以便我自己进行编程。有谁知道什么是错的以及如何克服这个问题?

0 投票
1 回答
3126 浏览

c++ - 为什么从基类而不是子类调用虚拟成员函数

我正在编写一小段代码来弄清楚如何将不同的模板特化存储到一个数据结构中(例如vector)。我知道,tuple但这并不好,因为我希望能够在tuple构建之后附加专业化。

下面是我想出的一段代码。简而言之,我的想法是让每个模板特化都继承自一个 common class Element,然后将这些实例存储到一个vector<Element>. 那行得通,但是现在当我从 访问该数据时vector,我将其作为Element. 我需要一些方法来找出哪个Element与哪个模板专业化配对。

typeid直接在vector返回基类型的元素上使用。我试图通过让一个成员函数runtime_type从子类返回该信息来解决这个问题。不幸的是,它不起作用,因为来自的成员函数SparseSet<T>没有覆盖基类的虚拟成员函数。我不确定为什么。

当我使用在线编译器coliru ( g++ -std=c++17 -O2 -Wall -pedantic -pthread main.cpp && ./a.out) 运行上面的代码片段时,我得到以下输出。