Есть ли способ заставить функцию constexpr не оцениваться во время компиляции [?]
blockquote>Если вы можете изменить функцию
constexpr
, добавив неиспользуемый параметр, Вы можете принудительно выполнить оценку во время выполнения, передав значение времени выполнения.Я имею в виду ... предположим, у вас есть следующая
constexpr
функцияconstexpr int getVal () { return 0; }
, которую вы можете использовать следующим образом
constexpr auto a = getVal(); auto b = getVal();
и (игнорируя правило "как есть" ) вы уверены, что
getVal()
вычисляется при инициализации во время компиляцииa
, но вы не знаете, вычислена ли она во время компиляции или во время выполненияb
.Но если вы измените функцию следующим образом
constexpr int getVal (int) { return 0; }
вы можете написать
int c = 1; constexpr auto a = getVal(0); auto b = getVal(c);
, теперь вы можете быть уверены, что
getVal()
вычисляется при инициализации во время компиляцииa
(потому чтоa
- этоconstexpr
, а0
- литерал), и это вычисляется во время инициализацииb
(потому чтоc
нельзя использовать в выраженииconstexpr
).Вы также можете проверить, что при записи
int c = 1; constexpr auto a = getVal(c);
вы получаете ошибку компиляции, потому что
a
должен быть инициализирован во время компиляции, ноgetVal(c)
не может быть вычислен во время компиляции.
Как другие люди сказали, действительно не имеет значения, где Вы сохраняете свои приложения - вещь, которая действительно имеет значение, то, что Вы последовательны об этом, так, чтобы, какой бы ни сервер Вы идете, его просто случай движения к обычному местоположению.
Я думаю единственная причина, которую люди используют/u/apps/# {appname}, то, что это - настройка по умолчанию Capistrano - конечно, это кажется нечетным мне делающий вещи тот путь.
Как другие плакаты я думаю, что необходимо просто поместить их везде, где самые естественные чувства. Читать man hier
если требуется видеть то, для чего предназначены каталоги в стандартной иерархии UNIX. Мне нравится помещать вещи, где-нибудь логичные под /var
Другой очень важный фактор - то, что Вы никогда не должны помещать свой каталог приложения направляющих где-нибудь где RAILS_ROOT
будет доступно в сети. Так прикрепление всего приложения направляющих в подкаталоге обычного сайта является большим нет - нет.
Я склонен создавать преданного пользователя для каждого приложения для направляющих, я выполняю и устанавливаю и добавляю того пользователя к www-data
группа. Так, я склонен иметь /home/mephisto/www
, /home/warehouse/www
и так далее.
Я делаю это просто для организации, и я не думаю, что она имеет значение очень.
CPanel основывал совместно использованный хостинг-аккаунт, который я использую, кажется, способствует/home/etc/rails_apps/...
Я думаю, что это довольно произвольно - пока они не находятся в Вашем общедоступном каталоге HTML.
Я использую Ubuntu и развертываюсь под/var/rails/appname (под которым выпуски / и / ток от Capistrano).
Я делаю это, чтобы иметь немного разделения между типами приложения: направляющие, php, статичный...
Я не думаю, что это действительно имеет значение, пока Вы устанавливаете полномочия и владение правильно.