Skip to content

Support for std::string_view in proxy_base #1625

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

misyltoad
Copy link

Allows code like the following to work:

std::string_view pretty_name = my_table["pretty_name"];

Otherwise it fails with:

error: conversion from ‘sol::table_proxy<sol::basic_table_core<false, sol::basic_reference<false> >&, std::tuple<const char (&)[12]> >’ to non-scalar type ‘std::string_view’ {aka ‘std::basic_string_view<char>’} requested
 2131 |                         std::string_view psvPrettyName = tTable["pretty_name"];
      |                                  

Allows code like the following to work:
```cpp
std::string_view pretty_name = my_table["pretty_name"];
```

Otherwise it fails with:

```
error: conversion from ‘sol::table_proxy<sol::basic_table_core<false, sol::basic_reference<false> >&, std::tuple<const char (&)[12]> >’ to non-scalar type ‘std::string_view’ {aka ‘std::basic_string_view<char>’} requested
 2131 |                         std::string_view psvPrettyName = tTable["pretty_name"];
      |                                  
```
@Spacechild1
Copy link

On the one hand, I can see how this can be useful to avoid unnecessary string copies. On the other hand, I think it can be pretty dangerous:

Because Lua has garbage collection, there is no guarantee that the pointer returned by lua_tolstring will be valid after the corresponding Lua value is removed from the stack.

https://www.lua.org/manual/5.3/manual.html#lua_tolstring

This would at least require a big fat warning in the documentation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants