Можно попробовать решить такую задачу на этапе компиляции. Шаблоны дают все возможности для этого и код остается переносимым.
template<int> void DoMyOperation(); template<> void DoMyOperation<4>() { // do 32-bits operations } template<> void DoMyOperation<8>() { // do 64-bits operations } int main() { // appropriate function will be selected at compile time DoMyOperation<sizeof(size_t)>(); return 0; }В примере выше использован тип size_t, но стандарт говорит только о том, что этот тип должен уметь хранить максимальный размер блока памяти в текущей реализации системы аллоцирования. Строго говоря, это только косвенно говорит о том скольки битная платформа используется, но сложно представить себе реализацию С++, где это будет неприменимо.