constexpr

Чтобы принудительно выполнить оценку функции constexpr во время компиляции, я должен быть возможность присвоить его возвращаемое значение переменной constexpr. constexpr bool const_d_ref(const double& v) { return false; } int main() { constexpr double dd = 0.0; constexpr bool cb = const_d_ref(dd); ...

// preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = 42; // constexpr-function: constexpr int MeaningOfLife () { return 42; } ...

есть ли разница между следующими определениями? const double PI = 3.141592653589793; constexpr double PI = 3.141592653589793; если нет, то какой стиль предпочтительнее в C++11?...

если у меня есть переменная внутри функции (скажем, большой массив), имеет ли смысл объявлять ее как static и constexpr? constexpr гарантии, что массив создается во время компиляции, так static бесполезно? void f() { static constexpr int x [] = { // a few thousand elements }; // do someth...

С помощью C++11, Ubuntu 14.04, GCC по умолчанию toolchain. этот код не выполняется: constexpr std::string constString = "constString"; ошибка: тип ' const string {aka const std:: basic_string}' constString переменной функция constexpr ‘ - это не буквальный... потому что... 'std:: basic_string' имее...

в самом конце выступления Скотта Шурра "о constexpr " на CppCon, он спрашивает:"Есть ли способ отравить функцию"? Затем он объясняет, что это можно сделать (хотя и нестандартным способом): поставить throw на constexpr функции объявления нерешенных extern const char* ссылка на неразрешенный extern на throw ...

позвольте мне начать с изложения моего намерения. В старые (C++) дни у нас был бы такой код: class C { public: enum {SOME_VALUE=27}; }; тогда мы могли бы использовать SOME_VALUE во всем нашем коде как константа времени компиляции и везде, где компилятор увидит C::SOME_VALUE, он просто вставит литерал 27....

рассмотрим следующую встроенную функцию: // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } и эквивалентная версия constexpr: // Cons...

любая функция, состоящая только из оператора return, может быть объявлена constexpr и таким образом позволит быть вычислено во время компиляции, если все аргументы - это constexpr и только constexpr функции вызываются в тело. есть ли причина не объявлять любой такая функция constexpr ? пример: constexpr i...

Это продолжение этого вопроса: законно ли объявлять объект constexpr initializer_list?. начиная с C++14,std::initializer_list класс имеет все свои методы, помеченные constexpr. Кажется естественным иметь возможность инициализировать экземпляр, выполнив constexpr std::initializer_list<int> list = {1, 2...