This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofC++14 status.
messages_base::catalog overspecifiedSection: 28.3.4.8.2[locale.messages]Status:C++14Submitter: Howard HinnantOpened: 2011-02-14Last modified: 2016-01-28
Priority:Not Prioritized
View all issues withC++14 status.
Discussion:
In 28.3.4.8.2[locale.messages],messages_base::catalog is specified to be a typedef toint. This type is subsequently used to open, access and close catalogs.
However, an OS may have catalog/messaging services that are indexed and managed by types other thanint. For examplePOSIX, publishes thefollowing messaging API:
typedefunspecified nl_catd;nl_catd catopen(const char* name , int oflag);char* catgets(nl_catd catd, int set_id, int msg_id, const char* s);int catclose(nl_catd catd);
I.e., the catalog is managed with an unspecified type, not necessarily anint. Mac OS uses avoid* fornl_catd (which is conforming to thePOSIX standard). The currentmessages_base spec effectively outlaws using the built-in OS messaging service supplied for this very purpose!
[2011-02-24: Chris Jefferson updates the proposed wording, changingunspecified tounspecified signed integral type]
[2011-03-02: Daniel updates the proposed wording, changingunspecified signed integral type tounspecified signed integer type (We don't want to allow forbool orchar)]
[2011-03-24 Madrid meeting]
Consensus that this resolution is the direction we would like to see.
Proposed resolution:
Modify 28.3.4.8.2[locale.messages]:
namespace std { class messages_base { public: typedefintunspecified signed integer type catalog; }; ...}