<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 22:00:04 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CXX-717] Add C++ compile-time standard detection</title>
                <link>https://jira.mongodb.org/browse/CXX-717</link>
                <project id="11980" key="CXX">C++ Driver</project>
                    <description>&lt;p&gt;The driver crashes badly if the library is linked to code not compiled with the same C++ standard level. For instance, if the driver is compiled with C&amp;#43;&amp;#43;98 (still the default on GCC 5), but some code using it with C&amp;#43;&amp;#43;11, the driver will crash.&lt;/p&gt;

&lt;p&gt;The header could be extended to detect this at run-time. For example, version.h.in could contain a macro to specify the C++ version used during compilation. Then, another macro evaluated on inclusion verifies that this version matches the currently used standard. If not, in #error can be thrown.&lt;/p&gt;</description>
                <environment></environment>
        <key id="235651">CXX-717</key>
            <summary>Add C++ compile-time standard detection</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="2">Won&apos;t Fix</resolution>
                                        <assignee username="david.golden@mongodb.com">David Golden</assignee>
                                    <reporter username="timn">Tim Niemueller</reporter>
                        <labels>
                            <label>legacy-cxx</label>
                            <label>pull-request</label>
                    </labels>
                <created>Thu, 22 Oct 2015 12:46:58 +0000</created>
                <updated>Tue, 4 Oct 2016 19:56:02 +0000</updated>
                            <resolved>Fri, 9 Sep 2016 16:22:23 +0000</resolved>
                                                                    <component>Implementation</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="1380607" author="david.golden" created="Fri, 9 Sep 2016 16:22:23 +0000"  >&lt;p&gt;I&apos;m cleaning up long-open tickets.  Given current priorities and backlog, we don&apos;t plan to commit resources to this.  Rather than leaving it open, I&apos;m going to mark it &quot;Won&apos;t Fix&quot; and close it.&lt;/p&gt;</comment>
                            <comment id="1068856" author="acm" created="Fri, 23 Oct 2015 12:21:10 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=timn&quot; class=&quot;user-hover&quot; rel=&quot;timn&quot;&gt;timn&lt;/a&gt; - I don&apos;t disagree that it could be helpful. Just that it will require some careful attention to make sure that it doesn&apos;t cause more problems than it solves, and that the implementation isn&apos;t too complex or fragile. We need to both make things simple for people and not break things in surprising or confusing ways for the simple cases. It is definitely something we will take under consideration.&lt;/p&gt;</comment>
                            <comment id="1068748" author="timn" created="Fri, 23 Oct 2015 06:51:03 +0000"  >&lt;p&gt;It&apos;s a start and one that would have saved me an hour of searching... We can further constrain it only to be used on GCC (and it seems even GCC 4.7 is required as earlier versions simply define __cplusplus to 1 instead of the standard versions number). We can then grow the checks from there and adapt them as authors come along different compilers.&lt;/p&gt;</comment>
                            <comment id="1067830" author="acm" created="Thu, 22 Oct 2015 14:29:40 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=timn&quot; class=&quot;user-hover&quot; rel=&quot;timn&quot;&gt;timn&lt;/a&gt; - Thanks for the PR. The reason that I think it needs some consideration is that the value of the __cplusplus macro isn&apos;t truly reliable. Not all compilers implement it, and those that do don&apos;t necessarily adjust it as intended. Furthermore, GCC actually doesn&apos;t break ABI between C&amp;#43;&amp;#43;03 and C&amp;#43;&amp;#43;98 by default, unless you opt in to the new std::basic_string ABI. It is also unclear to me what if any ABI changes exist on the clang side, or between C&amp;#43;&amp;#43;11 and C&amp;#43;&amp;#43;14. Furthermore, this doesn&apos;t solve all of the ABI problems you can run into: building the driver against libc&amp;#43;&amp;#43; but boost against libstdc&amp;#43;&amp;#43; is a common one. Most of the time, the real problem is that boost doesn&apos;t offer a consistent ABI between language versions.&lt;/p&gt;</comment>
                            <comment id="1067805" author="timn" created="Thu, 22 Oct 2015 14:08:12 +0000"  >&lt;p&gt;It&apos;s actually not that hard. I have created a pull request &lt;a href=&quot;https://github.com/mongodb/mongo-cxx-driver/pull/350&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-cxx-driver/pull/350&lt;/a&gt; that implements this. Have a look if you find it suitable.&lt;/p&gt;</comment>
                            <comment id="1067743" author="acm" created="Thu, 22 Oct 2015 13:07:20 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=timn&quot; class=&quot;user-hover&quot; rel=&quot;timn&quot;&gt;timn&lt;/a&gt; - Thanks, that is an interesting suggestion but will require some thought to get right. It is a frequent source of difficulty, so I agree that catching it deterministically would be good.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hsjf3r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>