Сообщение Re[2]: std::is_constant_evaluated() от 13.04.2020 17:34
Изменено 13.04.2020 17:46 Videoman
Re[2]: std::is_constant_evaluated()
Здравствуйте, watchmaker, Вы писали:
W>Требуется же поддержка в компиляторе. Например, через __builtin_is_constant_evaluated как в gcc и clang.
С одной стороны я догадывался, а с другой эта фича задекларирована как расширение библиотеки. По-этому была надежда, вдруг это можно с помощью шаблонной магии разрулить и я что-то упускаю.
W>Пока только дать программисту две функции и попросить самому выбрать нужную:
W>
К сожалению не получается, т.к. у меня может быть куча вложенных constexpr-методов или конструкторов и где-то внутри вот такой вот constexpr_add/runtime_add. Т.е. придется дублировать разные методы, а главное классы вышке по иерархии, и так как методы с constexpr и без нельзя перегрузить, код перестанет компилироваться одно с другим.
W>Требуется же поддержка в компиляторе. Например, через __builtin_is_constant_evaluated как в gcc и clang.
С одной стороны я догадывался, а с другой эта фича задекларирована как расширение библиотеки. По-этому была надежда, вдруг это можно с помощью шаблонной магии разрулить и я что-то упускаю.
W>Пока только дать программисту две функции и попросить самому выбрать нужную:
W>
W>constexpr int constexpr_add(int a, int b);
W>int runtime_add(int a, int b);
W>
К сожалению не получается, т.к. у меня может быть куча вложенных constexpr-методов или конструкторов и где-то внутри вот такой вот constexpr_add/runtime_add. Т.е. придется дублировать разные методы, а главное классы вышке по иерархии, и так как методы с constexpr и без нельзя перегрузить, код перестанет компилироваться одно с другим.
Re[2]: std::is_constant_evaluated()
Здравствуйте, watchmaker, Вы писали:
W>Требуется же поддержка в компиляторе. Например, через __builtin_is_constant_evaluated как в gcc и clang.
С одной стороны я догадывался, а с другой эта фича задекларирована как расширение библиотеки. По-этому была надежда, вдруг это можно с помощью шаблонной магии разрулить и я что-то упускаю.
W>Пока только дать программисту две функции и попросить самому выбрать нужную:
W>
К сожалению не получается, т.к. у меня может быть куча вложенных constexpr-методов или конструкторов и где-то внутри вот такой вот constexpr_add/runtime_add. Т.е. придется дублировать разные методы, а главное классы выше по иерархии, и так как методы с constexpr и без нельзя перегрузить, код перестанет компилироваться одно с другим.
W>Требуется же поддержка в компиляторе. Например, через __builtin_is_constant_evaluated как в gcc и clang.
С одной стороны я догадывался, а с другой эта фича задекларирована как расширение библиотеки. По-этому была надежда, вдруг это можно с помощью шаблонной магии разрулить и я что-то упускаю.
W>Пока только дать программисту две функции и попросить самому выбрать нужную:
W>
W>constexpr int constexpr_add(int a, int b);
W>int runtime_add(int a, int b);
W>
К сожалению не получается, т.к. у меня может быть куча вложенных constexpr-методов или конструкторов и где-то внутри вот такой вот constexpr_add/runtime_add. Т.е. придется дублировать разные методы, а главное классы выше по иерархии, и так как методы с constexpr и без нельзя перегрузить, код перестанет компилироваться одно с другим.