On Wed, Apr 8, 2009 at 7:51 PM, Eric Niebler
<eric@boost-consulting.com> wrote:
Ovanes Markarian wrote:
Eric Niebler wrote:
You mean, how did I discover the nature of the implementation-defined behavior for each compiler? It wasn't by reading any docs. I just played around with various compilers until
I found what worked. I found some compiler bugs in the process,
too. See:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334208
Interesting. Ok, but if a string maps to an integer it means that I
can only pass 4 characters at once on a 32bit platform???
Strings don't map to integers. Multicharacter literals do. And yes, that
means in general that you can only reliably count on being able to
encode a 4 char sequence in a multicharacter literal.
Yes, sure. It is already late in Munich and I have headache. I meant exactly that.
I just looked over your tests and did not get immediately that these
all use char test sequences.
I don't follow you.
Sorry again. I mean that your tests are based on 4-char literals, which I did not pay attention.
I used a slightly different approach in my previous use case.
template<char const* Str> string {...};
extern const char some_string[] ={"abcd efg..."};
typedef string<some_string> my_string_type;
Sure, but that gets hard to use, and you can't use this to compute new strings at compile time.
:) But for my special use case that was enough. I defenitely share your opinion, that a library implementation should be more flexible, than my special use case impl was. On the other hand I too oft see programmers which are ignorant and even don't give a chance to a great approach. I can imagine their reaction when seeing:
typdef mpl::string<'some', 'cool', 'type'> compile_time_string;
Would be cool to find a solution of really passing strings like:
typedef string<"abcd efg.."> some_other_type;
And if wishes were fishes we'd all cast nets. ;-)
Would be nice to get there ;)
Cheers,
Ovanes