int main(int, char**, char**) { constexpr str_const test("test!"); constexpr str_const test2(test); std::cout << test << std::endl; std::cout << "Out with range-based \"for\": "; for(auto& c: test) { std::cout << c; } std::cout << std::endl; static_assert(test.size() == 5, "Static assert failed!"); }
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include "string.hpp" #include "catch.hpp" template <char C> char get() { return C; } TEST_CASE("str_const is usable at compile time") { constexpr str_const s = "foobar"; static_assert(6 == s.size(), ""); static_assert(s[0] == 'f', ""); static_assert(s[1] == 'o', ""); static_assert(s[2] == 'o', ""); static_assert(s[3] == 'b', ""); static_assert(s[4] == 'a', ""); static_assert(s[5] == 'r', ""); } TEST_CASE("equality") { constexpr str_const f = "foo"; constexpr str_const b = "bar"; static_assert(f == f, "");