#include <cstddef>
struct Foo
{
private:
const char* var1;
std::size_t var2;
friend constexpr Foo operator"" _foo (const char* v, std::size_t len);
constexpr Foo(const char* param1, std::size_t param2) : var1(param1), var2(param2) {}
};
constexpr Foo operator"" _foo (const char* v, std::size_t len)
{
return Foo{v, len};
}
int main()
{
Foo myBar = "Hello, world!"_foo; // ctor via user defined literal OK
}
I2luY2x1ZGUgPGNzdGRkZWY+CiAKc3RydWN0IEZvbwp7CnByaXZhdGU6CiAgICBjb25zdCBjaGFyKiB2YXIxOwogICAgc3RkOjpzaXplX3QgdmFyMjsKIAogICAgZnJpZW5kIGNvbnN0ZXhwciBGb28gb3BlcmF0b3IiIiBfZm9vIChjb25zdCBjaGFyKiB2LCBzdGQ6OnNpemVfdCBsZW4pOwogCiAgICBjb25zdGV4cHIgRm9vKGNvbnN0IGNoYXIqIHBhcmFtMSwgc3RkOjpzaXplX3QgcGFyYW0yKSA6IHZhcjEocGFyYW0xKSwgdmFyMihwYXJhbTIpIHt9Cn07CiAKY29uc3RleHByIEZvbyBvcGVyYXRvciIiIF9mb28gKGNvbnN0IGNoYXIqIHYsIHN0ZDo6c2l6ZV90IGxlbikKewogICAgcmV0dXJuIEZvb3t2LCBsZW59Owp9CiAKaW50IG1haW4oKQp7CiAgICBGb28gbXlCYXIgPSAiSGVsbG8sIHdvcmxkISJfZm9vOyAvLyBjdG9yIHZpYSB1c2VyIGRlZmluZWQgbGl0ZXJhbCBPSwp9