Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 常量到非常量指针模板参数转换_C++_Sunstudio - Fatal编程技术网

C++ 常量到非常量指针模板参数转换

C++ 常量到非常量指针模板参数转换,c++,sunstudio,C++,Sunstudio,VC10和GCC 4.4接受以下内容,而Sun Studio 12不接受: std::pair<char*, int> p1; std::pair<char* const, int> p2; p1 = p2 std::对p1; std::p2对; p1=p2 Sun Studio 12抱怨: 错误:无法使用std::pair进行初始化 std::对 任何关于为什么会发生这种情况的想法,以及我如何让Sun Studio忽略这一点的想法。我正在使用一个第三方库,仅仅为了这

VC10和GCC 4.4接受以下内容,而Sun Studio 12不接受:

std::pair<char*, int> p1;
std::pair<char* const, int> p2;
p1 = p2
std::对p1;
std::p2对;
p1=p2
Sun Studio 12抱怨:

错误:无法使用std::pair进行初始化 std::对


任何关于为什么会发生这种情况的想法,以及我如何让Sun Studio忽略这一点的想法。我正在使用一个第三方库,仅仅为了这种事情重写它是一件痛苦的事情。

您确定要使用libstlport而不是libCstd吗?见:

这肯定是STL实现中的一个错误。C++98标准第20.2.2节,Pairs提供了模板构造函数
模板对(const pair&p)
,它从
p
的相应成员中初始化成员
第一个
第二个
,并根据需要执行隐式转换。

这似乎与Sun的std库有关

您的最佳选择可能是说服代码作者用以下内容替换作业:

p1 = std::make_pair(p2.first, p2.second);
或在施工时:

std::pair<char*, int> p1(p2.first, p2.second);
std::对p1(p2.first,p2.second);

看起来像是一个已损坏的库实现。。。你能通过
实用工具
标题找出模板化的构造函数是否损坏了吗?相关:好的观点。使用libCstd链接生成的代码会与使用STLPort生成的库进行比较吗?@Nick:我不确定。我从来没有试过。它可能会链接,但是如果模板实例化的二进制布局不同,并且在两个段之间传递对象,那么您的程序很可能会崩溃。此外,您可能会遇到一个与定义规则相关的链接器错误。