Что касается стандарта С++:
- Использует ли
std::function
коллекцию компиляторов GNU использовать тип данныхunion
для перевода между различными типами указателей функций (например, для преобразования нестатического указателя функции-члена в указатель функции нечлена)?Я думаю, что это так.EDIT: он использует тип данныхunion
, но никакого приведения не производится (стирание стилей). - Можно ли отличать
undefined behavior
между различными типами указателей функций (в С++ или С++ 11 Standard)? Я так думаю. - Возможно ли реализовать
std::function
без использования какого-либо кода сundefined behavior
?Я так не думаю.Я говорю об этом.
Следующий вопрос:
Мы иногда должны писать код с undefined behavior
в соответствии со стандартом С++ (но у них есть defined behavior
для определенных компиляторов С++, таких как GCC или MSVC)?
Означает ли это, что мы не можем/не должны предотвращать undefined behavior
наших кодов С++?