2015-02-18 3 views
1

«Простой» вопрос: можно ли явно использовать параметр по умолчанию при вызове функции, которая его ожидает? Что-то вроде:Принудительно использовать параметр по умолчанию

void function(int x, int y = 2, int z = 3) 
{ 
     // prints x, y and z 
} 

function(10, default, 13); // won't compile of course 
// would return x = 10, y = 2 and z = 3 

Спасибо

+0

Не вы знаете значение по умолчанию уже? – Axalo

+0

@Axalo: Да, но за все цели аргументов по умолчанию лучше не повторять их на callsite. –

+0

Я второй Натан, это похоже на дубликат для меня. –

ответ

3

Не со стандартным C++, но вы можете посмотреть на, например boost parameter library.

Небольшой пример:

#include <iostream> 
#include <boost/parameter.hpp> 
#include <boost/parameter/preprocessor.hpp> 

BOOST_PARAMETER_NAME(x) 
BOOST_PARAMETER_NAME(y) 
BOOST_PARAMETER_NAME(z) 

namespace tag { struct x; } 

BOOST_PARAMETER_FUNCTION(
     (void), 
     function, 
     tag, 
     (required (x, (int))) 
     (optional 
     (y, (int), 2) 
     (z, (int), 3) 
    ) 
) 
{ 
    std::cout << "Called with x = " << x << " y = " 
    << y << " z = " << z << std::endl; 
} 

int main() 
{ 
    function(1, _z = 5); 
    function(1, _y = 8); 
} 

live example

0

Нет, это не возможно в C++ в это время.

Смежные вопросы