Ошибка при попытке создания шаблона

Вы сами себе противоречите.

Ваш первоначальный тезис:

И не нужно меня отсылать к стандарту.

Покажите мне хоть один пример выражения времени компиляции, в рамках которого вы сможете взять адрес статической функции и использовать его в этом выражении времени компиляции.

Да. Однако ключевое слово constexpr - это просьба, а не приказ.

И не факт что компилятор подчинится:

C++Выделить код

1
2
3
4
5
6
7
8
9
10
11
12
13

#include <iostream>
 
constexpr size_t foo() { return (size_t)&foo; }
 
struct example
{
    enum { it = foo() };
};
 
int main()
{
    std::cout << "Hello, world!n";
}

Если вы закомментируете строку

То код скомпилируется.

Добавлено через 2 минуты

Не путайте понятия "параметр шаблона", "тело шаблона", и "выражение времени компиляции".

Выражение времени компиляции - это операции производимые над константами времени компиляции.

Ну так вот, несмотря на то, что стандарт заявляет, что адреса функции - константы времени компиляции, мы все равно не можем использовать значения этих констант.

Только имена. Можем использовать их в параметрах шаблонов, или в туловище шаблона. Но не в выражениях времени компиляции.