Post Ad333bCX6JMiORYRGK by vitaut@mastodon.social
(DIR) More posts by vitaut@mastodon.social
(DIR) Post #Ad333Pq9LBvP9pzuLY by smurthys@hachyderm.io
2023-12-21T21:10:27Z
0 likes, 0 repeats
In C++, how do I statically assert the type of a null-terminated string literal ("ordinary string literal", [lex.string])? 🙏For example, "it" whose type AFAIK is const char[3]static_assert(std::same_as<decltype("it"), const char[3]>); //failsCE: https://sigcpp.godbolt.org/z/4h475oh7a#question #cpp #cPlusPlus #programming
(DIR) Post #Ad333bCX6JMiORYRGK by vitaut@mastodon.social
2023-12-21T21:13:01Z
0 likes, 0 repeats
@smurthys static_assert(std::same_as<decltype("it"), const char(&)[3]>);but it doesn't guarantee null termination
(DIR) Post #Ad333dHZMYaAqdvUOG by smurthys@hachyderm.io
2023-12-21T21:14:21Z
0 likes, 0 repeats
@vitaut Good to know. But still type of "it" is const char[3], correct?
(DIR) Post #Ad333fD2CO8wp9otbE by Coyote@social.singing.dog
2023-12-21T22:32:58.987299Z
0 likes, 0 repeats
@smurthys @vitaut Yes; decltype returns T& for lvalues (when the argument isn't an identifier or class member) which string literals are.