Здравствуйте, sergii.p, Вы писали:
SP>Он компилируется, хотя легко понять что на этапе компиляции эту функцию не вызвать. Приходится добавлять
SP>SP>static_assert(foo() == "s");
SP>
SP>с единственной целью выяснить можно ли вызвать функцию в compile-time.
Это мне напоминает ситуацию с шаблонами:
#include <iostream>
template<typename T>
class Base {
T _value;
public:
Base() = default;
~Base() = default;
};
template<typename T>
class Derived : public Base<T> {
public:
void f() { std::cout << "f" << std::endl; }
void g() { std::cout << "g: " << this->_value << std::endl; }
};
int main() {
Derived<int> d;
d.f();
// d.g();
}
пока не попробуешь вызвать метод g() и не узнаешь, что у тебя в коде ошибка.
Так что в этом плане ничего нового