Я пытаюсь решить проблему, в которой DECLTYPE
будет значительно упростить вещи, но я работаю в проблеме DECLTYPE
* Это
и добавление Const
квалификатор . Примерный код ниже демонстрирует проблему.
#include
struct Foo
{
void bar()
{
static_cast(*this).bar();
}
void bar() const
{
std::cout << "bar" << std::endl;
}
};
int main(int argc, char* argv[])
{
Foo f;
f.bar(); // calls non-const method
return 0;
}
Код компилирует в MSVC2010, но выполнение рекусирует до тех пор, пока не возникает переполнение стека.
IDEONE сообщает об ошибке компилятора
prog.cpp: In member function 'void Foo::bar()':
prog.cpp:7:38: error: 'const' qualifiers cannot be applied to 'Foo&'
, если я изменил строку
static_cast(*this).bar();
на
static_cast(*this).bar();
, она работает, как ожидалось.
Я не злоупотребляю или недоразумению decltype?