Информация об изменениях

Сообщение Re[3]: почему SFINAE не рабоает? от 18.02.2020 14:41

Изменено 18.02.2020 14:41 vopl

Re[3]: почему SFINAE не рабоает?
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, vopl, Вы писали:


V>> компилируется? Если да — значит тип результата archive_type::save не зависит от состава nonserializable_type.


X>думаю, ты ошибаешься... или я...


X>тут:

X>
X>template<typename>
X>struct sfinae_true: std::true_type{};

X>template<typename Ar, typename T>
X>static auto test_serializable(int) -> sfinae_true<decltype(std::declval<Ar>().save(std::declval<T>()))>;
X>

X>- не важно какой- тип вернет decltype(), важно лишь — чтоб expression был валидным...

компилятор этот expression не разворачивает и внутрь его не заглядывает... Вот посмотри сюда https://gcc.godbolt.org/z/UhGLUf — там тело save вообще не задано
Re[3]: почему SFINAE не рабоает?
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, vopl, Вы писали:


V>> компилируется? Если да — значит тип результата archive_type::save не зависит от состава nonserializable_type.


X>думаю, ты ошибаешься... или я...


X>тут:

X>
X>template<typename>
X>struct sfinae_true: std::true_type{};

X>template<typename Ar, typename T>
X>static auto test_serializable(int) -> sfinae_true<decltype(std::declval<Ar>().save(std::declval<T>()))>;
X>

X>- не важно какой- тип вернет decltype(), важно лишь — чтоб expression был валидным...

компилятор этот expression не разворачивает и внутрь него не заглядывает... Вот посмотри сюда https://gcc.godbolt.org/z/UhGLUf — там тело save вообще не задано