I
Парни, подскажите, как выкрутиться здесь с стандартом C++1y? С 1z нормально компилится.
Просто не хочется явно писать конструктор от базового в дочернем классе.
Size: a a a
I
AT
bool/*std::optional/std::variant/std::unique_ptr/etc*/ f()
{
if (!check1()) {
return {};
}
if (!check2()) {
return {};
}
// ...
doSomething;
return true/*constructed object/smart pointer/etc*/;
}
bool
обязательно возвращать именно false
? Или нормально будет возвращать {}
?AT
sizeof
struct { unsigned int i : 24; }
— это 4? (вообще не зависит от количества бит битового поля, а только от части unsigned int
)АК
std::string_view s = "123"
. Имеем ли мы право cчитать, что s.data()[3] == '\0';
? Или же это UB, потому что можно читать только [s.data(), s.data() + s.size())
?EP
std::string_view s = "123"
. Имеем ли мы право cчитать, что s.data()[3] == '\0';
? Или же это UB, потому что можно читать только [s.data(), s.data() + s.size())
?АК
EP
АК
char buf[100] = {};
std::string_view s(buf, buf + 10);
s[30]; // valid?
s.data()[30]; // valid?
AN
EP
char buf[100] = {};
std::string_view s(buf, buf + 10);
s[30]; // valid?
s.data()[30]; // valid?
АК
TS
char buf[100] = {};
std::string_view s(buf, buf + 10);
s[30]; // valid?
s.data()[30]; // valid?
s.data()[30]
выглядит вполне валидноEP
АК
constexpr const_pointer data() const noexcept;data_
Returns:
.initializing data_ with str
constexpr basic_string_view(const charT* str);
# Preconditions: [str, str + traits :: length(str)) is a valid range.
# Effects: Constructs a basic_string_view,
and initializing size_ with traits :: length(str).Судя по всему, валидно.
# Complexity: O(traits::length(str))
v
std::string_view s = "123"
. Имеем ли мы право cчитать, что s.data()[3] == '\0';
? Или же это UB, потому что можно читать только [s.data(), s.data() + s.size())
?АК
"123"
(с нулём, очевидно)v
"123"
(с нулём, очевидно)v
"123"
(с нулём, очевидно)