小编Isa*_*ual的帖子

如何获得priority_queue的比较类型?

最相似的容器有会员类型,如key_comparevalue_compare但有没有priority_queue.

是因为priority_queue是适配器吗?或者这是错误的标准?

c++ priority-queue c++-standard-library language-lawyer

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

为什么成对的const可以被简单地复制而成对的不是?

std::cout << std::boolalpha;
std::cout << std::is_trivially_copyable< std::pair<const int,int> >::value;
std::cout << std::is_trivially_copyable< std::pair<int,int> >::value;
Run Code Online (Sandbox Code Playgroud)

当我使用GCC 9.2时,输出为true false

当我使用Clang 5.0或GCC 5.2时,输出为false false

为什么会有所不同?

c++

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

为什么 clang 缺少参数包错误的默认参数?

当我使用 clang (10.0.1) 编译时:

#include <iostream>

template <typename ...Args>
void f( int a = 4, Args&&... aArgs )
{
    std::cout << a << std::endl;
}

int main( int argc, char *argv[] )
{
    f( 1, 2 );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到:

main.cpp:4:30: error: missing default argument on parameter 'aArgs'
Run Code Online (Sandbox Code Playgroud)

但关于默认参数的标准说法:

在函数声明中,在带有默认实参的形参之后,所有后续形参必须具有在此或同一作用域的前一个声明中提供的默认实参 (C++11 起) ...除非形参是从形参扩展而来包或者是函数参数包。

这是一个叮当声错误吗?

提示:我在 gcc 上尝试了一下,效果很好

c++ clang clang++

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