Здравствуйте, MaximE, Вы писали:
ME>Здравствуйте, Кодт, Вы писали:
К>>К>> // доступ к данному
К>> inline const T& data() const { return t_; }
К>>
ME>Саттер и ISO/IEC 14882 пишут, что функция вида:
ME>ME>T f();
ME>
ME>где T является встроенным типом, всегда возвращает r-value. cv-квалифиатор не может быть применен к r-value, и это может помешать инстанцированию шаблонов.
ME>Т.е., чтобы это было совсем корректно, возможно, придется воспользоваться type traits.
И именно поэтому я пишу не T data() const, а const T& data() const.
Чтобы получить константное l-value (и в дальнейшем, например, использовать указатель на константу:
auto_value<int> x;
const int *y = & x.data();