Hi,
can anyone explain why an any_cast that adds a low-level const throws??
Example:
char str[] = "a2";
boost::any ay(str);
boost::any_cast(ay); // throws, since a const is added!!!
The only way to do this (without throwing), seems to be:
boost::any_cast(ay);
But why this mild "design deficiency"??
I call it "design deficiency", since the following is legal and works:
char str2[] = "str2";
static_cast(str2);
So we should be able to add a low-level const, to make something
read-only, right.
Thanks for comments and explanations.
n.
Here's some test-code:
///////
#include <iostream>
#include <algorithm>
#include
int main()
{
char str[] = "a1";
boost::any ay(str);
std::cout << "1 -- " << boost::any_cast(ay) << std::endl;
strcpy(str, "a2");
/* throws!! */ //std::cout << "2 -- " << boost::any_cast(ay) << std::endl;
strcpy(str, "a3");
std::cout << "3 -- " << *boost::any_cast(&ay) << std::endl;
strcpy(str, "a4");
/* segfault!! */ //std::cout << "4 -- " << *boost::any_cast(&ay) << std::endl;
char str2[] = "str2";
std::cout << "str2 -- " << static_cast(str2) << std::endl;
return 0;
}
///////