Один вид безумного подхода состоит в том, чтобы сделать всю вашу программу в большом template
.
В этом большом template<class Float> struct Program { ... };
вы используете методы для функций static
.
Во время выполнения, когда вы знаете, если ваша программа использует double
или float
(я надеюсь!), Вы поймете, что из, а затем выполнить эту версию Program
«s static void main()
, основная точка входа в вашем template
d программы.
Теперь, не все могут существовать в этом Program
template
, как вы можете делать разные вещи в классе, чем за ее пределами: точка Program
является дублировать основной поток кода и ваше «глобальное состояние» в одном месте ,
Program
может использовать другие template
s, как функции или черты или другие подобные коллекции данных static
. Он может даже вызывать функции и выполнять перегрузочное разрешение на основе соответствующего типа.
Если вы можете выделить, какие части вашего Program
действительно должны знать, что такое Float
, это может сэкономить вам много горя. Я бы сделал это только для относительно простой программы.
Как вы планируете использовать это? –
gloabl Cstruct будет содержать некоторые данные (двойные или int kind), которые в конечном итоге будут использоваться другими функциями memeber объекта. много данных. в конечном итоге я буду использовать его для программы cuda, где мне нужно определить данные в глобальной памяти для моей конкретной цели. – user1612986